Django admin drop down based on object open

I would like to use admin to do a lot of the heavy lifting in an application im building. I require the field icon in admin_navigation to be filtered by business that is in view.

for example: icon.objects.filter(business = self.business.id)

class admin_navigation(admin.TabularInline):
    list_display        = [field.name for field in navigation._meta.fields]
    readonly_fields     = []
    verbose_name        = "Navigation"
    verbose_name_plural = "Navigations"
    model               = navigation
    extra               = 0
    can_delete          = True
    classes             = ['collapse']

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        
        if db_field.name == "icon":
            if request.method == 'GET':
                bus_id = self.business.id #<----- here is my issue
                kwargs["queryset"] = icon.objects.filter(business = bus_id)
        return super(admin_navigation, self).formfield_for_foreignkey(db_field, request, **kwargs)
    

class admin_icon(admin.TabularInline):
    list_display        = [field.name for field in icon._meta.fields]
    readonly_fields     = ['icon_display']
    verbose_name        = "Icon"
    verbose_name_plural = "Icons"
    model               = icon
    extra               = 0
    can_delete          = True
    classes             = ['collapse']
    @mark_safe
    def icon_display(self, obj):
        return f'<script src="/static/falcon/vendors/fontawesome/all.min.js"></script><span class="{obj.class_name}"/>'
    
class admin_business(admin.ModelAdmin):
    list_display    = [field.name for field in business._meta.fields]
    inlines         = [admin_icon, admin_navigation]
admin.site.register(business, admin_business)
Вернуться на верх