Django – 在管理界面中过滤ForeignKey下拉菜单
发布时间:2020-12-20 13:43:57 所属栏目:Python 来源:网络整理
导读:当我访问事件结果表单(见下图)页面时,从管理界面我希望战斗下拉到只显示相关事件的战斗. 使用此URL / events / eventresult / 4 /我怎样才能使它只显示事件4的战斗而不是所有事件的所有战斗. 管理模式 class EventResultAdmin(admin.ModelAdmin): list_displ
当我访问事件结果表单(见下图)页面时,从管理界面我希望战斗下拉到只显示相关事件的战斗.
使用此URL / events / eventresult / 4 /我怎样才能使它只显示事件4的战斗而不是所有事件的所有战斗. 管理模式 class EventResultAdmin(admin.ModelAdmin): list_display = ('event','fight','howitended','winner','ended_in_round','fight_started','fight_ended',) search_fields = ['event__name'] 打斗模型 class Fight(TimeStampedModel): event = models.ForeignKey(Event,null=True,related_name='fights') fighter = models.ForeignKey(Fighter,related_name='%(app_label)s_%(class)s_fighter',null=True) fightstatus = models.ForeignKey('fights.FightStatus',blank=True) opponent = models.ForeignKey(Fighter,related_name='%(app_label)s_%(class)s_opponent',null=True) folder_name = models.CharField(max_length=500,blank=True,null=True) fight_highlights = models.CharField(max_length=500,null=True) fight_order = models.IntegerField(blank=True,null=True) name = models.CharField(max_length=500,blank=True) post_fight_interview = models.CharField(max_length=500,null=True) show_fact = models.NullBooleanField(default=True,null=True) total_round = models.IntegerField(blank=True,null=True) view_count = models.IntegerField(default=0,null=True) def __unicode__(self): return '{} vs {}'.format(self.fighter.name,self.opponent.name) 解决方法
找到了解决方案
if db_field.name == 'fight': event_result_id = request.META['PATH_INFO'].strip('/').split('/')[-1] event = EventResult.objects.get(pk=event_result_id) kwargs['queryset'] = Fight.objects.filter(event_id=event.event_id) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |