【发布时间】:2018-05-22 17:13:40
【问题描述】:
我有几个模型,我想过滤掉特定字段,但我不断收到错误消息:无法将关键字“唯一”解析到字段中。选项有:父母、id、唯一。这是我的模型和过滤器查找:
#models
class Parent(models.Model):
parent_name = models.CharField(max_length=30)
objects = models.Manager()
class Unique(models.Model):
unique_name = models.CharField(max_length=10)
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
objects = models.Manager()
class Name(models.Model):
name_name = models.CharField(max_length=20)
unique = models.ForeignKey(Unique, on_delete=models.CASCADE)
objects = models.Manager()
class Item(models.Model):
item_name = models.CharField(max_length=30)
name = models.ForeignKey(Name, on_delete=models.CASCADE)
objects = models.Manager()
这是我一直在尝试的查询:
if Parent.objects.filter(parent_name__iexact = new_parent.parent_name,
unique__unique_name__iexact = new_unique.unique_name,
unique__name__name_name__iexact = new_name.name_name,
unique__name__item__item_name__iexact = new_item.item_name).exists():
我想确保数据库中存在跨越 ForeignKey 关系的某些模型。 New_ 变量是表单输入。
编辑:我得到了代码,我一定搞砸了一些非常小的东西。当前代码有效,从现在开始我将使用 PEP8 更好地发现错误,谢谢 :)
【问题讨论】:
-
我觉得你的字段以大写开头有点奇怪,通常字段都是小写的。
-
对于过滤,一个父级可以有多个
Uniques,所以在这种情况下,默认情况下相反的是unique_set。 -
与问题无关,但你的代码看起来很奇怪,你应该遵循python风格指南:python.org/dev/peps/pep-0008
-
你也不需要像这样链接过滤器,你可以只有一个
.filter()并用逗号分隔过滤器。 -
如果您对模型和字段不使用相同的词,例如父母。父母。使用名称/标题/描述/标识符之类的,因为它是一个字符串。
标签: python django django-models django-views