Commit f6606da3 authored by Timo Graham's avatar Timo Graham
Browse files

[1.2.X] Fixed #15208 - Document ModelAdmin.formfield_for_choice_field; thanks julien.

Backport of r15399 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15400 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 01fce67c
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -887,6 +887,25 @@ to multiple owners -- a many to many relationship -- you could filter the
                kwargs["queryset"] = Car.objects.filter(owner=request.user)
            return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

.. method:: ModelAdmin.formfield_for_choice_field(self, db_field, request, **kwargs)

    Like the ``formfield_for_foreignkey`` and ``formfield_for_manytomany``
    methods, the ``formfield_for_choice_field`` method can be overridden to
    change the default formfield for a field that has declared choices. For
    example, if the choices available to a superuser should be different than
    those available to regular staff, you could proceed as follows::

        class MyModelAdmin(admin.ModelAdmin):
            def formfield_for_choice_field(self, db_field, request, **kwargs):
                if db_field.name == "status":
                    kwargs['choices'] = (
                        ('accepted', 'Accepted'),
                        ('denied', 'Denied'),
                    )
                    if request.user.is_superuser:
                        kwargs['choices'] += (('ready', 'Ready for deployment'),)
                return super(MyModelAdmin, self).formfield_for_choice_field(db_field, request, **kwargs)

.. method:: ModelAdmin.has_add_permission(self, request)

    Should return ``True`` if adding an object is permitted, ``False``