2013-08-07 30 views
0

我的代碼:獲取列表顯示,以顯示ManyToManyField有組織格式的Django

class PurchaseOrder(models.Model): 
    product = models.ManyToManyField('Product', null =True) 

    def get_products(self): 
     return "\n".join([p.products for p in self.product.all()]) 

class Product(models.Model): 
    products = models.CharField(max_length=256, null =True) 

    def __unicode__(self): 
     return self.products 

在views.py:

class PurchaseOrderAdmin(admin.ModelAdmin): 
    fields = ['product'] 
    list_display = ('get_products') 

,給了我這樣的: 然而,問題是格式非常不好。我怎樣才能得到它像這樣:

+0

你嘗試'回報 「
」 。加入([p.products用於self.product.all()p])'? – karthikr

+0

嗯,我只是試圖「

」。加入([在self.product.all p.products爲P()),但沒有奏效 – Mdjon26

+0

'

'是不是一個有效的HTML標記 – karthikr

回答

1

您可以使用filter_horizontal

class PurchaseOrderAdmin(admin.ModelAdmin): 
    list_display = ('get_products') 
    filter_vertical = ['product'] 

或者你可以使用一個inline

class ProductInline(admin.TabularInline): 
    model = Product 

class PurchaseOrderAdmin(admin.ModelAdmin): 
    inlines = (ProductInline,) 
+0

的filter_vertical只做爲與第一圖像的屏幕的過濾器。我想要第二個圖像的顯示。 – Mdjon26