私は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-queriesを生成します(私は生のsql =が得意ではありません))。
BoughtRecordに対してCallが常に存在するとは限らない、またはQオブジェクトが後方外部キーで適切に機能しない可能性があるのはそのためだと思います。Qオブジェクトから複雑なクエリをコンパイルすることが多く、予期しない結果が生じることがあるため、この動作を説明してください。一見すると結果が似ているはずなのに、実際には違うという状況を知りたい。