显示来自不同表的对象

时间:2015-09-30 16:11:49

标签: django

我正在使用Django和Django-tables2。我的模型看起来像这样:

# 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'

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

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

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"}

1 个答案:

答案 0 :(得分: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__方法(Python 2中的__unicode__)以返回名称。但是,这会影响您显示单词类别的其他地方,因此您可能不希望进行此更改。

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

    def __str__(self):
        return self.name