12

次のクラスがあります: Ingredients、Recipe、RecipeContent...

class Ingredient(models.Model):
    name = models.CharField(max_length=30, primary_key=True)
    qty_on_stock = models.IntegerField()

    def __unicode__(self):
        return self.name

class Recipe(models.Model):
    name = models.CharField(max_length=30, primary_key=True)
    comments = models.TextField(blank=True)
    ingredient = models.ManyToManyField(Ingredient)

    def __unicode__(self):
        return self.name

class RecipeContent(models.Model):
    recipe = models.ForeignKey(Recipe)
    ingredients = models.ForeignKey(Ingredient)
    qty_used = models.IntegerField()

しかし、RecipeContent の __unicode__() については、この RecipeContent が属するレシピ名を使用したいと思います...それを行う方法はありますか?

4

4 に答える 4

26
class RecipeContent(models.Model):
  ...
  def __unicode__(self):
    # You can access ForeignKey properties through the field name!
    return self.recipe.name
于 2008-12-27T20:02:38.330 に答える
2

レシピの名前部分だけを気にする場合は、次のことができます。

class Recipe(models.Model):
    name = models.CharField(max_length=30, primary_key=True)
    comments = models.TextField(blank=True)
    ...

    def __unicode__(self):
        return self.name

class RecipeContent(models.Model):
    recipe = models.ForeignKey(Recipe)
    ...

    def __unicode__(self):
        return str(self.recipe)
于 2011-07-16T01:01:29.723 に答える
0

はい、(ビシャンティ ポイントとして) できますが、__unicode__()が呼び出されたが FK がまだ設定されていない場合に備えてください。私はこれに数回入りました。

于 2008-12-31T18:31:53.533 に答える