Skip to main content
 首页 » 编程设计

python之两个django模型的交集

2025年02月15日28三少

我有两个模型,我想根据它们的 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() 

我想在 University 模型的 in 和 NewsUniversityMappings 模型的 universityId 的基础上找到这两个模型的共同点。任何帮助将不胜感激。 提前致谢

请您参考如下方法:

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

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 中只有 Universities 有 ID,它在至少一个 NewsUniversityMappings 的 universityId 变量中的某处。 是吗?