【发布时间】:2015-01-14 18:02:43
【问题描述】:
这些是我的 Models.py 中的内容
class InstituteType(models.Model):
institute_type_id = models.AutoField(primary_key=True)
institute_type_name = models.CharField(max_length = 50)
institute_type_description = models.TextField(max_length = 300)
class InstituteMasters(models.Model):
institute_id = models.AutoField(primary_key=True)
institute_name = models.CharField(max_length=100)
institute_institute_type = models.ForeignKey(InstituteType,verbose_name="Institute Type")
institute_district = models.ForeignKey(Districts, verbose_name = "District")
institute_vdc_municipality = models.ForeignKey(VdcMunis,null=True,blank=True,verbose_name="VDC/Municipality")
#.....
class InstituteInfos(models.Model):
institute_info_id = models.OneToOneField(InstituteMasters,primary_key=True,verbose_name="Name of Institute",null=False)
vision = models.TextField(max_length=500, blank=True)
mission = models.TextField(max_length=500, blank=True)
goal = models.TextField(max_length=500, blank=True)
#......
表中有 3 行与模型 InstituteTypes 相关..
研究所类型ID;研究所类型名称;研究所类型描述
1;构成;一些文本
2;技术服务;一些文本
3;附属;一些文本
InstituteMasters 表中有很多行包含所有 1,2,3 的 InstituteTypes id
但有趣的是!在 python manage.py shell
>>> xx = InstituteInfos.objects.filter(institute_info_id__institute_institute_type__institute_type_id = 1)
>>> xx
返回对象
>>> xx = InstituteInfos.objects.filter(institute_info_id__institute_institute_type__institute_type_id = 2)
>>> xx
返回 []
为什么我不能过滤 InstituteMasters 字段 inistitute_institute_type 设置为 2 的 InstituteInfos?类型 1 和 3 的代码过滤器相同。如果我从 InstituteMasters 过滤,则返回所有 1、2、3。
【问题讨论】:
-
显而易见的答案是您要过滤的特定组合在数据库中不存在
-
感谢@Anetropic。我必须严格检查我的数据库。发现我的导入过程中缺少一些数据。
标签: python django django-queryset