I'm making a beer website, and I'm stuck. I need to have a recipe that i can relate to many different ingredients. Is there a way to create a model "Ingredient", and inherit many different models: "Hop", "Grain", etc. I would want to do this so I have my relationship between recipe and ingredient, and i don't have to create 100 different relationships to cover each kind of ingredient.

Is this possible?

有帮助吗?

解决方案

Although I would personally advise against it in most cases since table inheritance is a pain (imho) in Django.

You can do it like this:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top