summaryrefslogtreecommitdiff
path: root/tests/regressiontests/admin_widgets/widgetadmin.py
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2009-01-16 15:32:31 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2009-01-16 15:32:31 +0000
commitf212b24b6469b66424354bf970f3051df180b88d (patch)
tree379b8102f38ddde424cb0005cf2f468d409f691e /tests/regressiontests/admin_widgets/widgetadmin.py
parentd579e716fef9f06f04861815cf949630d8633271 (diff)
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
Diffstat (limited to 'tests/regressiontests/admin_widgets/widgetadmin.py')
-rw-r--r--tests/regressiontests/admin_widgets/widgetadmin.py22
1 files changed, 22 insertions, 0 deletions
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)