标题可能看起来有点令人困惑。但是,我想要做的很简单。我有以下型号:
class ListEntry(models.Model):
name = models.CharField(max_length=64)
expire_date = models.DateField('date of expiration')
create_date = models.DateField('date created')
class ListWarning(models.Model):
mailing_list = models.ForeignKey(ListEntry)
first_warning = models.BooleanField()
last_warning = models.BooleanField()
我想查询引用具有特定名称的邮件列表的List Warning对象。这是一个例子:
first_warning_list = ListWarning.objects.filter(mailing_list.name='PH_212', first_warning=True, last_warning=False)
然而,由于某种原因,python抱怨语法错误:
first_warning_list = ListWarning.objects.filter(mailing_list.name='PH_212', first_warning=True, last_warning=False)
SyntaxError: keyword can't be an expression
执行此查询的语法正确方法是什么?
答案 0 :(得分:2)
使用双下划线而不是点符号来引用mailing_list名称
first_warning_list = ListWarning.objects.filter(mailing_list__name='PH_212', first_warning=True, last_warning=False)
文档here.
Django提供了一种强大而直观的方式来“跟踪”查找中的关系,注意事项 在幕后自动为您提供SQL JOIN。只是为了跨越关系 使用模型间相关字段的字段名称,用双下划线分隔, 直到你到达你想要的地方。