Django - ForeignKey Drop Down filtering in admin interface

From the admin interface, when I get access to the event result form (see the figure below), I want the fight to drop out to show only the battles for the event in question.

enter image description here

Using this URL / events / eventresult / 4 / , how can I make it show only fights for event 4. , and not all fights for all events.

admin model

class EventResultAdmin(admin.ModelAdmin):
    list_display = ('event', 'fight', 'howitended', 'winner', 'ended_in_round', 'fight_started', 'fight_ended',)

    search_fields = ['event__name']

battle model

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)
+4
source share
1 answer

Solution found

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)
+1
source

All Articles