外键和原始查询的

外键和原始查询的

一种

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?

最佳答案

当前的方法是使用 SubqueryOuterRef :

示例取自我的代码。 StoreStoreInformation 有一个名为 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/

10-11 09:31