Ответ 1
class RecipeContent(models.Model):
...
def __unicode__(self):
# You can access ForeignKey properties through the field name!
return self.recipe.name
У меня есть следующие классы: Ingredients, Recipe and 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()
но для __unicode __() в RecipeContent Я бы хотел использовать имя рецепта, к которому принадлежит этот RecipeContent... есть ли способ сделать это?
class RecipeContent(models.Model):
...
def __unicode__(self):
# You can access ForeignKey properties through the field name!
return self.recipe.name
Если вы только заботитесь о части имени Рецепта, вы можете сделать:
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)
Да, вы можете (как точки bishanty), но будьте готовы к ситуации, когда вызывается __unicode__()
, но FK еще не установлен. Я пришел в это несколько раз.
В Python 3 нет __unicode__
, вместо этого вам нужно использовать __str__
.
class RecipeContent(models.Model):
...
def __str__(self):
return self.recipe.name