此图像出现此问题 http://i.imgur.com/oExvXVu.png
我希望它能够在框中显示VendorProfile名称而不是VendorProfile对象。我在VendorProfile中使用PurchaseOrder的外键关系。 这是我在models.py中的代码:
class PurchaseOrder(models.Model):
product = models.CharField(max_length=256)
vendor = models.ForeignKey('VendorProfile')
class VendorProfile(models.Model):
name = models.CharField(max_length=256)
address = models.CharField(max_length=512)
city = models.CharField(max_length=256)
这是我在admin.py中的代码:
class PurchaseOrderAdmin(admin.ModelAdmin):
fields = ['product', 'dollar_amount', 'purchase_date','vendor', 'notes']
list_display = ('product','vendor', 'price', 'purchase_date', 'confirmed', 'get_po_number', 'notes')
那么如何让它在两个字段和list_display中显示VendorProfile的'name'?
答案 0 :(得分:3)
为返回名称的VendorProfile
方法定义__unicode__
方法。
来自文档:
只要在对象上调用
__unicode__()
,就会调用unicode()
方法。 Django在许多地方使用unicode(obj)
(或相关函数,str(obj)
)。最值得注意的是,在Django管理站点中显示一个对象,并在显示一个对象时将值插入到模板中。因此,您应该始终从__unicode__()
方法返回一个漂亮的,人类可读的模型表示。
class VendorProfile(models.Model):
# fields as above
def __unicode__(self):
return self.name
答案 1 :(得分:2)
最简单的方法是在类中添加一个unicode函数,返回要在下拉列表中显示的值:
class PurchaseOrder(models.Model):
product = models.CharField(max_length=256)
vendor = models.ForeignKey('VendorProfile')
def __unicode__(self):
return self.product
class VendorProfile(models.Model):
name = models.CharField(max_length=256)
address = models.CharField(max_length=512)
city = models.CharField(max_length=256)
def __unicode__(self):
return self.name
然后,将在管理员下拉列表中显示供应商名称。