Python 将选择限制为通过Q
我正试图从外键相关字段中获取数据列表,但它无法将\u选项\u限制为 我的模型Python 将选择限制为通过Q,python,django,django-models,Python,Django,Django Models,我正试图从外键相关字段中获取数据列表,但它无法将\u选项\u限制为 我的模型 def limit_choices_segment(): 返回Q(角色=地点.城市)&Q(角色=地点.村庄)&Q(角色=地点.城镇) 类别段(核心模型): 起始点=模型.ForeignKey(放置,在删除=模型.CASCADE上,限制选项到=限制选项段, 相关_name='出发点') 结束点=模型.ForeignKey(放置,在删除=模型.CASCADE上,限制选项到=限制选项段, 相关的(名称=(到达点) route
def limit_choices_segment():
返回Q(角色=地点.城市)&Q(角色=地点.村庄)&Q(角色=地点.城镇)
类别段(核心模型):
起始点=模型.ForeignKey(放置,在删除=模型.CASCADE上,限制选项到=限制选项段,
相关_name='出发点')
结束点=模型.ForeignKey(放置,在删除=模型.CASCADE上,限制选项到=限制选项段,
相关的(名称=(到达点)
routes=models.ForeignKey(路由,on_delete=models.CASCADE)
定义(自我):
返回“{}-{}”。格式(self.start\u点,self.end\u点)
当我只用一个Q(role=Place.CITY)或其他Q(角色=Place.CITY)来尝试它时,它工作得非常完美你是想这样做吗
def limit_choices_segment():
return Q(role=Place.CITY) Q(role=Place.VILLAGE) | Q(role=Place.TOWN)
相反?它可能不起作用,因为您正在为三个不同的角色使用
&
来过滤它们。但是|的意思是“或”,我需要包含所有这些过滤器,所以我应该使用&“和”或来包含它们,而和只会同时包含角色为所有这三件事的对象,逻辑上与任何对象都不匹配。