0
所以我們可以說我有這些模型在我的Django應用程序:Django的多對多通過模型實現
class Ingredient(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Recipe(models.Model):
name = models.CharField(max_length=100)
ingredients = models.ManyToManyField(Ingredient,
through='RecipeIngredient')
def __unicode__(self):
return self.name
class RecipeIngredient(models.Model):
recipe = models.ForeignKey(Recipe)
ingredient = models.ForeignKey(Ingredient)
quantity = models.DecimalField(max_digits=4, decimal_places=2)
unit = models.CharField(max_length=25, null=True, blank=True)
def __unicode__(self):
return self.ingredient.name
現在我要訪問一個配方的成分(真的RecipeIngredients)。通過Django外殼:
>>> r = Recipe.objects.get(id=1)
>>> ingredients = RecipeIngredients.objects.filter(recipe=r)
這對我來說似乎是違反直覺和笨拙的。理想情況下,我希望能夠有一個食譜對象,並直接從它獲取RecipeIngredients。
是否有更優雅的模型實現?有什麼方法可以改進我現有的模型實現嗎?
我甚至不知道我可以訪問過'recipeingredients_set' X(似乎現在顯而易見...謝謝! – kevlar1818