我正在做一個啤酒網站,而我被卡住了。我需要有一個食譜,我可以涉及許多不同的成分。有沒有辦法創建一個模型「成分」,並繼承許多不同的模型:「合」,「穀物」等我想這樣做,所以我有我的配方和成分之間的關系,我沒有創建100種不同的關係來涵蓋每種成分。django繼承傷害了我的大腦
這可能嗎?
我正在做一個啤酒網站,而我被卡住了。我需要有一個食譜,我可以涉及許多不同的成分。有沒有辦法創建一個模型「成分」,並繼承許多不同的模型:「合」,「穀物」等我想這樣做,所以我有我的配方和成分之間的關系,我沒有創建100種不同的關係來涵蓋每種成分。django繼承傷害了我的大腦
這可能嗎?
儘管在大多數情況下我會親自勸告它,因爲表繼承在Django中是一種痛苦(imho)。
你可以這樣說:
class Recipe(models.Model):
name = models.CharField()
class Ingredient(models.Model):
name = models.CharField()
recipes = models.ManyToManyField(Recipe, related_name='%(app_label)s_%(class)s')
class Hop(Ingredient):
pass
class Grain(Ingredient):
pass
你說你想要一個名爲合模型,稱爲糧食的模式,等等?你不想有一個領域的成分類型或類似的東西? –
一般來說,只有當您需要使用不同的代碼才能使用它時,您應該有一個單獨的模型。在Hop和Grain之間不太可能出現這種情況,將它們作爲兩種類型的成分對待會更簡單(帶有'ingredient_type'字段來區分它們) –
它們具有不同的字段,例如我想要啤酒花的酸性水平,並且我想要穀物的糖勢 – danatron