我有一個Django模型,該模型已經存在,我想重複,並且我找不到一個簡單的方法,因爲相關名稱衝突跨越ForeignKey
s和ManyToMany
s。如何創建具有M2M和FK關係的Django模型的精確副本
舉個例子,讓我們把模型我現在有Dog
:
class Dog(models.Model):
name = models.CharField()
owner = models.ForeignKey('myapp.Owner')
breeds = models.ManyToMany('myapp.Breed', help_text="Remember, animals can be mixed of multiple breeds.")
我想使這種模式在其他地方使用完全相同的副本,與不同的數據庫表和名稱。我試着用abstract base class:
class AnimalAbstract(models.Model):
name = models.CharField()
owner = models.ForeignKey('myapp.Owner')
breeds = models.ManyToMany('myapp.Breed', help_text="Remember, animals can be mixed of multiple breeds.")
class Meta:
abstract = True
class Dog(AnimalAbstract):
pass
class Cat(AnimalAbstract):
pass
失敗的原因的related_name
衝突。
是否有任何方法可以自動複製像這樣的模型,而不必明確重新定義每個ForeignKey
和ManyToMany
?
要搶先回答問題:是的,我知道multi-table inheritance,我不想使用它。我也知道,我可以簡單地將它們全部存儲在同一個表中,並使用proxy models自定義管理器來自動篩選出錯誤類型的動物,但我不希望那些—我希望它們在單獨的數據庫表上。