我在 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 数据库。有人知道问题在哪里吗?
这很可能是你应该检查的相关 django 票证 https://code.djangoproject.com/ticket/24513
这个问题可能以某种方式相关,尽管不是 100% https://github.com/jet-admin/jet-django/issues/7
阅读线程可能会获得一些见解。
如果要从实例访问 ForeignKey 字段,则无法像此处那样直接访问它
{% for user in current_folder.company.members.all %}
外键字段是一家公司,所以它应该是
current_folder.company_set()
注: 外键返回一组对象。在您的情况下,一组公司。这就是为什么它返回FieldDoesNotExist
如果要访问相关对象,则必须在 ManyToManyFields 中添加 related_name
参数。所以对于这种情况,应该是这样的:
class Company(models.Model):
name = models.CharField(max_length=200)
members = models.ManyToManyField(User, related_name='members')
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)
尝试添加空字段和空白字段
members = models.ManyToManyField(user, blank=True, null=True)
日期库中可能存在重复的项目。
您可以使用以下命令列出模型中的所有项目进行检查:
YourModel.objects.values_list('id', 'name')
为避免这种情况,请确保设置 unique=True。
name = models.CharField(max_length=200, unique=True)