两个django模型的交叉点?

时间:2017-04-25 10:00:27

标签: python django

我有两个模型,我想根据它们的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模型和universityId NewsUniversityMappings模型的基础上找到两个模型的共同点。任何帮助都将受到赞赏。 提前致谢

1 个答案:

答案 0 :(得分:1)

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

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,这是在{I} NewsUniversityMappings中至少有一个的universityId变量中的某个位置。 是吗?