Django——在管理界面中过滤外键下拉菜单

标签 django django-models django-admin

从管理界面访问事件结果表单(见下图)页面时,我希望战斗下拉菜单仅显示相关事件的战斗。

enter image description here

使用此 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', null=True, 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, blank=True, 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, blank=True, 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)

关于Django——在管理界面中过滤外键下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25139368/

相关文章:

python - Django-models 将 dateField 的格式更改为 "DD-MM-YYY"

python - 尝试从 Django ADMIN 中的外部用户模型调用 is_active 方法

python - 符号链接(symbolic link)如何在 Linux 中工作

django - Django模型有DESCRIBE函数吗?

python - Django:如何将 STATIC_URL 设为空?

Django:自动将模型字段中的空字符串设置为无?

django - Django ModelForm 上外键字段的自由格式输入

django - 如何将计算字段添加到 django admin inline

Django + PostgreSQL 触发器导致 "violates foreign key constraint"

django - 模板语法错误 : inlines is not a valid tag library