2013-05-10 65 views
0

我正在使用django-tables并尝试显示包含一些相关字段的表。django-tables - 相关字段详细名称

class User(models.Model): 
    name = models.CharField(_("name"), max_length=100) 
    comp = models.ForeignKey(Company) 

class Company(models.Model): 
    name = models.CharField(_("name"), max_length=100) 
    country = models.CharField(_("country"), max_length=200) 
    def __unicode__(self): 
     return self.name 

class UserTable(tables.Table): 
    class Meta: 
     model = User 
     fields = ('name', 'comp', 'comp.country',) 
     empty_text = _('No user') 

我得到正确的数据,但在每个Comp相关标题

+------+----------------+-----------------+ 
| Name | Comp   | Comp   | 
+------+----------------+-----------------+ 
| Bob | Comp 1   | France   | 
| John | Comp 2   | United Kingdom | 
| ... | ...   | ...    | 
+------+----------------+-----------------+ 

可能是什么原因?
我不应该得到NameCompCountry


更新

在原来的问题的错误,我已经更新了。

+1

只是好奇。为什么要使用'user.pref.country','user.pref.phone''?为什么不只是'国家','电话'? – 2013-05-10 11:10:29

+0

谢谢你指出,我在这个问题上犯了一个错误。它已更新 – 2013-05-10 12:29:28

回答

1

django-table文档 -

领域 - 指定模型领域包括

但你包括关系 -

fields = ('user', 'user.pref.country', 'user.pref.phone',) 

我从未使用过的应用程序,所以我不确定它是如何工作的,但我认为这是每个字段的详细名称,以lat为单位呃两种情况下,user字段优先,因此它取user字段的详细名称。

更新:

看来你可以提供自定义详细名称,试试这个。不知道这是否会奏效,因为国家是一个相关领域。 -

class UserTable(tables.Table): 
    country = tables.Column(verbose_name="Country") 

    class Meta: 
     model = User 
     fields = ('name', 'comp', 'comp.country',) 
     empty_text = _('No user') 
+0

实际上它与关系一起工作,因为它提取正确的数据。但也许它并没有确实解决相关字段的详细名称。 – 2013-05-10 12:35:02

+0

检查答案中的更新。 – 2013-05-10 12:45:43

+0

我看到了,但我想利用我已经翻译的模型领域,即:'_(“国家”)' – 2013-05-10 13:02:40

0

使用accessor解决您的领域允许定义冗长的名字

class UserTable(tables.Table): 
    name = tables.Column(accessor='name', verbose_name=_('name')) 
    comp = tables.Column(accessor='comp', verbose_name=_('company')) 
    country = tables.Column(accessor='comp.country', verbose_name=_('country'))