加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读