我有 2 个模型:
class Call(models.Model):
date_time_created = models.DateTimeField(auto_now_add = True)
comment = models.CharField(max_length = 300, blank= True, null=True)
bought_record = models.ForeignKey('BoughtRecords')
class BoughtRecords(models.Model):
date_time_bought = models.DateTimeField(auto_now_add= True)
bought_packet = models.ForeignKey('BoughtPackets')
我写了2个查询:
Q1 = Q(call__result = 1)
company_for_call = BoughtRecords.objects.exclude(Q1)
company_for_call = BoughtRecords.objects.exclude(call__result = 1)
我期望这个查询有同样的行为。它们生成略有不同的 sql 查询(我不擅长原始 sql=))。
我想这就是为什么 BoughtRecord 并不总是存在 Call 的原因,或者可能是 Q-objects 不能与反向外键一起正常工作。请解释一下这种行为,因为我经常从 Q 对象编译复杂的查询,有时会得到意想不到的结果。我想知道乍一看结果必须是相似的,但实际上却不同的情况。