1

此图像出现问题 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 的“名称”?

4

2 回答 2

3

为返回名称的方法定义一个__unicode__方法。VendorProfile

从文档:

__unicode__()每当您调用unicode()对象时都会调用该方法。Django在很多地方使用unicode(obj)(或相关函数)。str(obj)最值得注意的是,在 Django 管理站点中显示对象,并在显示对象时作为插入模板的值。__unicode__()因此,您应该始终从该方法返回一个很好的、人类可读的模型表示。

class VendorProfile(models.Model):
    # fields as above

    def __unicode__(self):
        return self.name
于 2013-07-31T20:06:04.620 回答
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

然后将在管理员下拉菜单中显示供应商名称。

于 2013-07-31T20:08:40.377 回答