一种
class AKeywords(models.Model):
id = models.AutoField(primary_key=True, db_column="kw_id")
word = models.CharField(max_length=200)
...
class Meta:
managed = False
db_table = '"A"."Keywords"'
乙
class BKeywords(models.Model):
id = models.AutoField(primary_key=True, db_column="kw_id")
word = models.CharField(max_length=200)
...
class Meta:
managed = False
db_table = '"B"."Keywords"'
我有另一个模型,我想在其中执行我的加入。
class XKeywords(models.Model):
...
k_id = models.IntegerField(blank=True, null=True)
...
class Meta:
managed = False
db_table = '"public"."XKeywords"'
我有两个非常相似的模型,一个来自数据库模式,另一个来自另一个数据库模式。
将与表 A 或 B 连接的第三个模型是我想要的。
如何在不使用外键和原始查询的情况下加入模型 A 或 B?
最佳答案
当前的方法是使用 Subquery
和 OuterRef
:
示例取自我的代码。 Store
和 StoreInformation
有一个名为 store_number
的字段。
from django.db.models import Subquery, OuterRef
Store.objects.annotate(timezone=Subquery(
StoreInformation.objects.filter(store_number=OuterRef('store_number')).values('store_timezone')[:1]
))
这是加入一个名为
store_timezone
的字段。关于没有外键和原始查询的 Django ORM 连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39291372/