我正在將項目從django 1.8升級到1.10,它看起來像Django已經改進了外鍵和模型繼承之間最終名稱衝突的檢查。 這顯然是一件好事,但我需要升級的projet是一個很大的,它將是一個地獄重新命名模型。Django繼承和父對象相關的名稱
讓我解釋一下這個問題:我叫Parent
,許多兒童被連接在一起,像這樣一個基類:
class Parent(models.Model):
title = models.CharField(max_length=10)
class ChildA(Parent):
description = models.TextField()
class ChildB(Parent):
description = models.TextField()
childa = models.ForeignKey(ChildA)
這裏的衝突是一個childb
對象2「childa」屬性:
- 的 「childa」 ForeignKey的
- 由ChildA模型繼承的情況下(因爲childb也有
parent
屬性)。
這裏的2個顯而易見的解決方案是:
- 重命名ForeignKey的
ChildB.childa
到ChildB.somethingelse
- 的
ChildA
模型重命名爲別的東西。
這兩種解決方案的成本很高,可能會引入新的錯誤。 所以我想知道:是否可以重命名繼承對象的反向相關名稱?
例如:
p = Parent.objects.get(pk=1)
print p.childa_child # Hit the ChildA instance
我不知道如果我很清楚,但我會繼續這個問題,是最新的。
==== ====編輯
更簡潔,如果我有2種型號class Parent(models.Model)
和class Child(Parent)
,動態屬性創建parent.child
。
是否可以在不觸及類名的情況下編輯此屬性名稱?
完全是它!謝謝。 這裏也是鏈接到文檔中的參考: https://docs.djangoproject.com/en/1.10/topics/db/models/#specifying-the-parent-link-field – martync