JD *_*boa 4 sql django django-models
想象我有两个简单的模型(这不是我真正拥有的,但这个可以):
Class Person(models.Model):
person_id = models.TextField()
name = models.TextField()
#...some other fields
Class Pet(models.Model):
person_id = models.TextField()
pet_name = models.TextField()
species = models.TextField()
#...even more fields
Run Code Online (Sandbox Code Playgroud)
这是此示例与我读到的其他一些问题之间的主要区别:我的模型不强制执行外键,因此我无法使用select_related()
我需要创建一个视图,显示每个查询集中两个查询集之间的联接。所以,让我们想象一下,我想要看到所有名叫约翰的主人和一只狗的景色。
# a first filter
person_query = Person.objects.filter(name__startswith="John")
# a second filter
pet_query = Pet.objects.filter(species="Dog")
# the sum of the two
magic_join_that_i_cant_find_and_possibly_doesnt_exist = join(person_query.person_id, pet_query.person_id)
Run Code Online (Sandbox Code Playgroud)
现在,我可以用任何函数连接这两个非常非常简单的查询集吗?
或者我应该使用原始的?
SELECT p.person_id, p.name, a.pet_name, a.species
FROM person p
LEFT JOIN pet a ON
p.person_id = a.person_id AND
a.species = 'Dog' AND
p.name LIKE 'John%'
Run Code Online (Sandbox Code Playgroud)
这个查询可以吗?该死,我不确定了...这是我的查询问题。一切都是同时发生的。但连续查询看起来很简单......
如果我在模型类中引用“外键”(供select_related()
使用),迁移后它会在数据库中强制执行吗?(我需要它不会发生)
创建一个 models.ForeignKey 但使用db_constraint=False
.
请参阅https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.ForeignKey.db_constraint
另外,如果这个模型是managed=False
,即它是一个遗留数据库表,并且您没有使用 Django 迁移,那么首先就不会产生约束,这很好。
归档时间: |
|
查看次数: |
3073 次 |
最近记录: |