2011-08-10 59 views
2

我想在对象的管理页面中显示产品所属的类别的级别。从下面的显示中删除了不重要的字段。如何在django管理页面显示外键属性

class Category(models.Model): 
    name = models.CharField(max_length=50, default=False) 
    level = models.IntegerField(help_text="1, 2 ,3 or 4") 

class Product(models.Model): 
    category = models.ForeignKey(Category) 
    name = models.CharField(max_length=100) 


    prepopulated_fields = {'slug': ('name',)} 
    fieldsets = [ 
     ('Product Info',{'fields': ['name', 'slug','partno','description']}), 
     ('Categorisation',{'fields': ['brand','category']}), 

很显然,我已经试过一点点地得到这个工作,并用Google搜索了很多,但我发现参考list_filter很多,但没有关于刚表示场。 最好的猜测是

'category__level' 

任何人都知道这样做的正确方法?

回答

1

最简单的方法是把Categorylevel__unicode__方法:

class Category(models.Model): 
    name = models.CharField(max_length=50, default=False) 
    level = models.IntegerField(help_text="1, 2 ,3 or 4") 

    def __unicode__(self): 
     return u'%s [%d]' % (self.name, self.level) 

所以选择框中将显示它。

+0

不是一个糟糕的解决方法,我必须采用,如果没有一个正确的方式做我想做的事情。 – bytejunkie

2

在你admin.py文件

class ProductAdmin(admin.ModelAdmin): 
    list_display = ('name', 'category__level', 'category') 

admin.site.register(Product, ProductAdmin) 

试试这个.............

+0

即时尝试显示产品列表中的类别级别,而不是在产品索引页面上。 也,你不能这样做,除非你试图添加的项目是一个可调用或属性,这是很容易修复与模型方法... 但不完全是我即将做的事情。 – bytejunkie

5

定义上的ModelAdmin类中的方法返回相关的值字段,并将其包含在list_display中。

class ProductAdmin(admin.ModelAdmin): 
    list_display = ('name', 'level') 
    model = Product 

    def level(self, obj): 
     return obj.category.level 
相关问题