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)