django表2访问m2m

时间:2014-05-03 10:25:20

标签: django django-tables2 m2m

我有两种模式:

class Hi(models.Model):
   name = models.CharField(max_length=2)


class Hello(models.Model):
    name = models.CharField(max_length=50)
    his = models.ManyToManyField(Hi)

我正在尝试渲染Hello模型。因此我tables.py喜欢这样:

class HelloTable(tables.Table):
    his = models.ColoumnField()

    def render_his(self, value):
        hi = []
        for i in value.his.all():
            hi.append(i)
        return (',').join(hi)

     #And the metas

我得到ManyToMany has no attribute his。怎么了?

1 个答案:

答案 0 :(得分:0)

这应该可以解决您的问题并简化您的代码:

def render_his(self, value):
    return (', ').join(list(value.all()))

def render_his(self, value):
    return (', ').join([x.name for x in value.all()])

如果您想要特定属性而不是unicode对象的Hi表示。

您收到错误是因为valueManyToManyField个实例,而不是Hello个实例。