From f212b24b6469b66424354bf970f3051df180b88d Mon Sep 17 00:00:00 2001 From: Jacob Kaplan-Moss Date: Fri, 16 Jan 2009 15:32:31 +0000 Subject: Cleaned up and refactored `ModelAdmin.formfield_for_dbfield`: * The new method uses an admin configuration option (`formfield_overrides`); this makes custom admin widgets especially easy. * Refactored what was left of `formfield_for_dbfield` into a handful of smaller methods so that it's easier to hook in and return custom fields where needed. * These `formfield_for_*` methods now pass around `request` so that you can easily modify fields based on request (as in #3987). Fixes #8306, #3987, #9148. Thanks to James Bennet for the original patch; Alex Gaynor and Brian Rosner also contributed. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9760 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/admin_widgets/widgetadmin.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/regressiontests/admin_widgets/widgetadmin.py (limited to 'tests/regressiontests/admin_widgets/widgetadmin.py') diff --git a/tests/regressiontests/admin_widgets/widgetadmin.py b/tests/regressiontests/admin_widgets/widgetadmin.py new file mode 100644 index 0000000000..bc28dac86a --- /dev/null +++ b/tests/regressiontests/admin_widgets/widgetadmin.py @@ -0,0 +1,22 @@ +""" + +""" +from django.contrib import admin + +import models + +class WidgetAdmin(admin.AdminSite): + pass + + +class CarTireAdmin(admin.ModelAdmin): + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == "car": + kwargs["queryset"] = models.Car.objects.filter(owner=request.user) + return db_field.formfield(**kwargs) + return super(CarTireAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + +site = WidgetAdmin() + +site.register(models.Car) +site.register(models.CarTire, CarTireAdmin) -- cgit v1.3