gpt4 book ai didi

python - 反向查找 'QuerySet'对象没有属性

转载 作者:行者123 更新时间:2023-12-01 08:41:28 24 4
gpt4 key购买 nike

我有以下模型,我在其中定义了一家 cargo 公司及其保险公司。模型.py:

class Truckers(models.Model):
DOT_Number = models.IntegerField(primary_key=True)
Address = models.CharField( max_length=200)

class CaliIns_FK(models.Model):
DOTNmb = models.ForeignKey(Truckers, on_delete=models.CASCADE)
CoName = models.CharField(max_length=20)

卡车司机很多,但保险公司却不多。我正在尝试获取每个有保险的卡车司机的名单。

我按照 django 尝试了以下操作:

truck = Truckers.objects.all()
filtered = truck.caliinsfk_set.filter(truckers__isnull=True)

filtered = truck.caliins_fk_set.filter(truckers__isnull=True)

出现错误:

AttributeError: 'QuerySet' object has no attribute 'caliinsfk_set'

最佳答案

假设您想要 Truckers 对象没有相关的 CaliIns_FK,您可以 .filter() 您的 卡车:

Truckers.objects<b>.filter(caliins_fk__isnull=True)</b>

或者考虑到 ForeignKey 有一个 lated_name,它应该是:

Truckers.objects<b>.filter(<i>myrelatedname</i>__isnull=True)</b>

(mylatednameForeignKeylated_name 中的值)因此,在这里我们获得了一个QuerySet,它没有相关的CaliIns_FK对象。

这会导致查询带有LEFT OUTER JOIN,因此如果相关CaliIns_FK的“集合”为空,它将有一行带有NULL :

SELECT truckers.*
FROM truckers
LEFT OUTER JOIN caliins_fk ON truckers.DOT_Number = caliins_fk.DOTNmb_id
WHERE caliins_fk.id IS NULL

请注意,通常不会使用模型的复数名称,或外键中的主键名称。根据 PEP-8,属性也以小写字母和下划线书写。更接近 Django 风格的方法是:

class Trucker(models.Model):
dot_number = models.IntegerField(primary_key=True)
address = models.CharField( max_length=200)

CaliInsurance(models.Model):
trucker = models.ForeignKey(Trucker, on_delete=models.CASCADE)
coname = models.CharField(max_length=20)

在这种情况下,查询如下所示:

Trucker.objects<b>.filter(caliinsurance__isnull=True)</b>

关于python - 反向查找 'QuerySet'对象没有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com