我正在构建一个视图集,它接受邮政编码并试图将它们与我的数据库(Postgresql)进行匹配。找到匹配项是没有问题的,但我很好奇返回数据库中没有匹配项的值的最佳方法。
class Location(models.Model):
name = models.CharField(max_length=255)
code = models.CharField(max_length=255)
字符串
我想让它给予我在这个查询中找不到的东西。
locations = ['77449', '11368', '60629', '99999']
valid_locations = Location.objects.filter(code__in=locations).distinct()
型
是否有一个方法我错过了,给我回任何位置,不匹配我的过滤器-在这种情况下99999
?
2条答案
按热度按时间bt1cpqcv1#
在这一点上,我的解决方案是获得
set()
的匹配,并从原始位置列表中减去它。字符串
我可以引发一个自定义异常,并将
invalid_locations
作为API中的错误发送回去。下面是我的输出与上述代码
型
6yt4nkrj2#
你可以使用Django模型Q对象来过滤
https://docs.djangoproject.com/en/5.0/topics/db/queries/#complex-lookups-with-q-objects
或者在您的情况下,简单的.exclude(code__in=locations)也可以工作