我有两个模型,我想根据它们的 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 变量中的某处。 是吗?
