如何允许在django管理面板中编辑多对多关系

时间:2011-10-27 01:37:34

标签: django django-admin many-to-many

有一个看起来像这样的类定义

class someClass(models.Model):
    field1 = models.ForeignKey('other_app.field4')
    field2 = models.ManyToManyField('other_app.field5')
    variable_name  = [1-char choices]
    field3 = models.CharField(max_length=1, choices=variable_name, blank=True)

当我尝试在管理面板中编辑此类时,我得到:

TypeError at /admin/[app]/[someClass]/add/

假设它与ManytoMany字段有关,有任何明显的解决方法吗?


更新:好的,所以我发现了问题:我的合作伙伴编写的代码有一个迭代__str__函数:

def __str__(self):
    str_rep = '%s for ' % (self.field1)
    for p in self.field2:
        str_rep += str(p) + self.field3

关于如何重写这个的任何想法?

1 个答案:

答案 0 :(得分:1)

将来,请尝试发布实际的追溯和相关的代码行。它会向我们展示这段代码的确切位置。

field2不可迭代。您需要通过致电QuerySetManyRelatedManagerall()获取filter(...)

https://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships

def __str__(self):
    str_rep = '%s for ' % (self.field1)
    for p in self.field2.all():
        str_rep += str(p) + self.field3