【发布时间】:2021-07-18 13:27:12
【问题描述】:
我是 Django 新手,但我的 sql 工作正常。我想知道如何在 Django 中进行这样的查询
我有带连接的 SQL 语句
select a.id,
b.id
from model.a
join model.b on model.b.a_id=model.a.id
where 'need to find'=Any(a.info);
型号:
class A(models.Model):
name = models.CharField(max_length=200)
info = models.ArrayField()
class B(models.Model):
name = models.CharField(max_length=200)
a = models.ForeignKey('A', related_name='a', on_delete=models.CASCADE)
【问题讨论】:
-
=Any(a.info)应该做什么? -
请注意,通常 Django 查询会返回 objects 的查询集,而不是元组。虽然这是可能的,但它不是很优雅。可能在这里您想要获取
.a已填写的B对象,这样只需一个查询即可获取匹配的B模型对象,以及相应的A对象。 -
使用
ArrayField也不是一个好主意:数据库规范化规则基本上希望将复合值转换为单独的表并链接到该模型:en.wikipedia.org/wiki/Database_normalization -
以
queriesindjango开头,您可能想专门寻找lookups-that-span-relationship -
你不加入 Django,Django 为你加入。请用你自己的话解释你想用你的模型做什么。