在__unicode__
方法中,您不能直接使用ForeignKey
字段。__unicode__
方法用于定义对象的字符串表示,通常用于在Django管理后台中显示对象的名称。在这个方法中,您应该返回一个字符串,而不是引用其他模型的字段。
如果您需要在模型中引用其他模型的字段,可以在模型类中定义一个方法,并在该方法中使用ForeignKey
字段。例如:
class Author(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
def get_author_name(self):
return self.author.name
在这个例子中,Book
模型有一个ForeignKey
字段author
,它引用了Author
模型。get_author_name
方法返回与该书籍关联的作者的名称。您可以在代码中使用此方法来获取与该书籍关联的作者的名称。
如果您需要在Django管理后台中显示与该书籍关联的作者的名称,可以使用__str__
方法,而不是__unicode__
方法。__str__
方法的定义方式与__unicode__
方法类似,但它返回一个Python 3中的字符串,而不是一个Unicode字符串。例如:
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
def __str__(self):
return self.title + ' by ' + self.author.name
在这个例子中,__str__
方法返回一个字符串,该字符串包含书籍的标题和与该书籍关联的作者的名称。在Django管理后台中,这将显示为每本书的标题和作者名称。
领取专属 10元无门槛券
手把手带您无忧上云