我有以下课程:食材,食谱和食谱内容......
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所属的Recipe名称......有没有办法做到这一点?
答案 0 :(得分:26)
class RecipeContent(models.Model):
...
def __unicode__(self):
# You can access ForeignKey properties through the field name!
return self.recipe.name
答案 1 :(得分: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)
答案 2 :(得分:0)
是的,你可以(作为bishanty点),但是在调用__unicode__()
但FK尚未设置的情况下做好准备。我进入这几次。
答案 3 :(得分:0)
在Python 3中没有__unicode__
,您需要使用__str__
。
class RecipeContent(models.Model):
...
def __str__(self):
return self.recipe.name