Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Django, how do I mimic the two-step method of adding users through the admin for my own models?

I have a model where I would like to make a custom admin change_form mimicking the behavior of the Add User functionality of the stock Django Admin Interface. That is, I want a two-step action where the user will first input only a device-id and then be taken to a page where he can enter information on the device. Similar to how you first enter username and password on a user and then fill in the other information on the following page. Any ideas?

like image 738
Jens Alm Avatar asked Sep 13 '10 13:09

Jens Alm


1 Answers

I finally managed to find how django does it. There is a response_add method redefined inside proper ModelAdmin. Here is a link to it for the User model in django source: django.contrib.auth.admin.py. It looks like this:

def response_add(self, request, obj, post_url_continue='../%s/'):
    if '_addanother' not in request.POST and '_popup' not in request.POST:
        request.POST['_continue'] = 1
    return super(UserAdmin, self).response_add(request, obj, post_url_continue)

If you add this method to your ModelAdmin class, then it should work similarly.

That covers only two step save process in admin panel, but the other funcionalities like adding extra fields to the form on second step can also be digged out in the django source.

like image 160
Dzejkob Avatar answered Sep 30 '22 12:09

Dzejkob