两个Django模型的交集是什么?

3
我可以帮您翻译,以下是翻译结果:

我有两个模型,我想根据它们的ID找出共同的值集合

第一个模型:

from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User

# WE ARE AT MODELS/UNIVERSITIES

class Universities(models.Model):
    id = models.IntegerField(db_column="id", max_length=11, help_text="")
    name = models.CharField(db_column="name", max_length=255, help_text="")
    abbreviation = models.CharField(db_column="abbreviation", max_length=255, help_text="")
    address = models.CharField(db_column="address", max_length=255, help_text="")
    status = models.BooleanField(db_column="status", default=False, help_text="")
    createdAt = models.DateTimeField(db_column='createdAt', auto_now=True, help_text="")  
    modifiedAt = models.DateTimeField(db_column='modifiedAt', auto_now=True, help_text="")  
    updatedBy = models.ForeignKey(User,db_column="updatedBy",help_text="Logged in user updated by ......")

    class Meta:
        managed = False
        get_latest_by = 'createdAt'
        db_table = 'universities'

另一个模型:

from __future__ import unicode_literals

from django.db import models



class NewsUniversityMappings(models.Model):
    id = models.IntegerField(db_column="id", max_length=11, help_text="")
    newsMappingId = models.IntegerField( db_column='newsMappingId' ,max_length=11, help_text="")
    universityId = models.IntegerField( db_column='universityId', max_length=11, help_text="")
    createdAt = models.DateTimeField(db_column='createdAt', auto_now=True, help_text="")

    class Meta:
        managed = False
        db_table = 'news_university_mappings'

现在,在我的看法中,我已经为两个模型创建了对象:
def add_promoter_news(request, mapping_id=None, news_virtual_id=None):
    try:
        university_all_list = Universities.objects.using("cms").all
        published_university_list = NewsUniversityMappings.objects.using("cms").filter(newsMappingId=news_virtual_id).all()

我想在Universities模型的in基础上,与NewsUniversityMappings模型的universityId找到两个模型共同的部分。非常感谢您提供的任何帮助。谢谢。
1个回答

2

嗯,我不确定这是否是您想要的,但:

def add_promoter_news(request, mapping_id=None, news_virtual_id=None):
    try:
        # Get that queryset
        published_university_list = NewsUniversityMappings.objects.using("cms").filter(newsMappingId=news_virtual_id).all()
        # Get list of distinct universityIds
        published_university_IDS_list = published_university_list.values_list('universityId',flat=True).distinct()
        # Get queryset of all Universities
        university_all_list = Universities.objects.using("cms").all()
        # Get queryset of universities with ids on previous list
        university_list = university_all_list.filter(id__in=published_university_IDS_list)

现在在university_list中,您只有ID与NewsUniversityMappings中至少一个变量的Universities。 就是这样吗?

这就是我需要的,但是在这里,university_list = university_all_list.filter(id__in=published_university_IDS_list) 出现了错误,提示说 'function' 对象没有属性 'filter'。 - undefined
对不起,在 university_all_list = Universities.objects.using("cms").all() 中忘记了括号,当然函数 all 没有 'filter'。请尝试修改后的答案。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接