FieldDoesNotExist:ManyToManyField没有名为None的字段

时间:2016-03-15 09:12:55

标签: python django manytomanyfield

我在Django 1.8.8中有两个模型:

class Company(models.Model):
    name = models.CharField(max_length=200)
    members = models.ManyToManyField(User)
class Folder(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(null=True, blank=True)
    company = models.ForeignKey(Company, null=True, blank=True)
    parent = models.ForeignKey("Folder", null=True, blank=True)

当我在模板中做的时候

{% for user in current_folder.company.members.all %}

我有时(几页后重新加载)会得到非常奇怪的错误:

FieldDoesNotExist: Company_members has no field named None

我也使用sqlite3数据库。任何人都知道哪里有问题?

5 个答案:

答案 0 :(得分:1)

这很可能是您应该检查的相关 django 票证https://code.djangoproject.com/ticket/24513

这个问题虽然不是 100% https://github.com/jet-admin/jet-django/issues/7

您可能会通过阅读主题获得一些见解。

答案 1 :(得分:0)

数据库中有可复制的项目。

您可以使用以下方式列出模型中的所有项目进行检查:

YourModel.objects.values_list('id', 'name')

要避免它,请确保设置unique = True。

name = models.CharField(max_length=200, unique=True)

答案 2 :(得分:0)

如果你想从一个实例访问一个 ForeignKey 字段,你不能像这里那样直接访问它

{% for user in current_folder.company.members.all %}

ForeignKey 字段是一家公司,所以它应该是

current_folder.company_set()

注意:ForeignKey 返回一组对象。在你的情况下,一组公司。这就是它返回 FieldDoesNotExist

的原因

答案 3 :(得分:-1)

如果要访问相关对象,则在ManyToManyFields中必须添加SELECT t.FK_Product_ID AS Product , o.[2013] AS Orders_2013 , r.[2013] AS Revenue_2013 , o.[2014] AS Orders_2014 , r.[2014] AS Revenue_2014 , o.[2015] AS Orders_2015 , r.[2015] AS Revenue_2015 FROM OrdersCrossTabQuery o INNER JOIN RevenueCrossTabQuery r ON o.[Product] = r.[Product] 参数。因此,对于这种情况,应该是这样的:

related_name

答案 4 :(得分:-1)

尝试添加空字段和空白字段

members = models.ManyToManyField(user, blank=True, null=True)