Privacy Policy
Snippets index

  Retrieve Model instance from ModelAdmin via get_object()

class MyModelAdmin(admin.ModelAdmin):

    def get_instance(self, request):
        try:
            object_id = request.resolver_match.kwargs['object_id']
            obj = self.get_object(request, object_id)
        except:
            obj = None
        return obj

Credits:

or

class AdvisorPlugin(admin.ModelAdmin):

    ...

    # See:
    # http://stackoverflow.com/questions/5213612/how-can-i-give-def-formfield-for-manytomany-an-id-of-editable-object#5216214
    def get_object(self, request, object_id, from_field=None):
        # Hook obj for use in formfield_for_manytomany
        self.obj = super(AdvisorPlugin, self).get_object(request, object_id, from_field)
        return self.obj

    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == 'topics' and getattr(self, 'obj', None):
            # Filter formfield based on selected forum
            kwargs["queryset"] = Topic.objects.filter(forum=self.obj.forum)
        formfield = super(AdvisorPlugin, self).formfield_for_manytomany(db_field, request, **kwargs)
        return formfield

Credits: