2015-09-30 35 views
0

我正在使用Django和Django-tables2。我有一个模型,看起来像这样:来自不同表格的显示对象

从表中的Word
# models.py 
class Word(models.Model): 
[...] 
    word_category = models.ForeignKey('Wordcategory', db_column='word_category') 
    class Meta: 
     managed = False 
     db_table = 'Word' 

class Wordcategory(models.Model): 
    [...] 
    name = models.CharField(max_length=255) 
    class Meta: 
     managed = False 
     db_table = 'WordCategory' 

在我的表,我显示的条目,但我为我想要显示相应的WordCategory对象的名称值的每个Word对象。我怎么做?

编辑:我的表类现在看起来是这样的,没有类别正在打印,无论是在控制台或在网站上:

class CategoryColumn(tables.Column): 
    def render(self, value): 
     return value.name 


class WordsTable(tables.Table): 
    category = CategoryColumn(verbose_name="Kategorie", accessor="category") 

    def render_category(self, value): 
     print value.name 
     return value.name 

    class Meta: 
     model = Word 
     attrs = {"class": "table"} 
+0

word_object.word_category.name? –

回答

0

在Django的tables2,你可以添加一个render method定制如何列被渲染。

class WordTable(tables.Table): 
    def render_word_category(self, value): 
     """Display the name of the category""" 
     return value.name 

    class Meta: 
     model = Word 

另一种方法是改变__str__方法(__unicode__在Python 2)返回的名称。但是,这会影响显示单词类别的其他地方,因此您可能不想进行此更改。

class Wordcategory(models.Model): 
    [...] 
    name = models.CharField(max_length=255) 

    def __str__(self): 
     return self.name 
+0

您的两条建议都无效,请参阅编辑:/ – user1406177

+0

您是否最终获得了此答案?如果它没有解决您的问题,您不必接受答案。 – Alasdair

相关问题