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 に答える