我希望在管理面板中将我的下拉列表的显示名称作为父模型的位置标题。默认情况下,列表显示列表中所有项目的“SNMPData Object”。
但是我想显示网站名称,我认为这就像添加self.location一样简单,但是这会引发错误
错误:
coercing to Unicode: need string or buffer, MajorSiteInfoData found
代码:
class MajorSiteInfoData(models.Model):
Location = models.CharField(max_length=200)
class Meta:
verbose_name = "Major Site Locations"
verbose_name_plural = "Major Site Locations"
def __unicode__(self):
return self.Location
class SNMPData(models.Model):
Location = models.ForeignKey(MajorSiteInfoData)
SNMP_AUTH = models.CharField(max_length=200)
SNMP_PRIV = models.CharField(max_length=200)
class Meta:
verbose_name = "SNMP Data"
verbose_name_plural = "SNMP Data"
def __unicode__(self):
return self.Location
答案 0 :(得分:3)
__unicode__
函数需要返回一个你想要显示的字符串。您的功能应如下所示:
def __unicode__(self):
return self.Location.Location
要改进的一件事是,不应该为不同的模型使用相同的字段名称,您可能会很快混淆自己,因为有时您需要Location
,有时您需要Location.Location
,如上所述。将外键重命名为major_site_info
之类的其他内容。同样使用带有下划线的小写字母用于字段名称,Camel用例用于python中的类名。