Added to admin docs how to add polymorphic child model as inline.
This commit is contained in:
+21
-1
@@ -53,6 +53,12 @@ use the ``base_form`` and ``base_fieldsets`` instead. The ``PolymorphicChildMode
|
||||
automatically detect the additional fields that the child model has, display those in a separate fieldset.
|
||||
|
||||
|
||||
Polymorphic Inlines
|
||||
-------------------
|
||||
|
||||
To add a polymorphic child model as an Inline for another model, add a field to the inline's readonly_fields list formed by the lowercased name of the polymorphic parent model with the string "_ptr" appended to it. Otherwise, trying to save that model in the admin will raise an AttributeError with the message "can't set attribute".
|
||||
|
||||
|
||||
.. _admin-example:
|
||||
|
||||
Example
|
||||
@@ -64,7 +70,7 @@ The models are taken from :ref:`advanced-features`.
|
||||
|
||||
from django.contrib import admin
|
||||
from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin
|
||||
from .models import ModelA, ModelB, ModelC
|
||||
from .models import ModelA, ModelB, ModelC, StandardModel
|
||||
|
||||
|
||||
class ModelAChildAdmin(PolymorphicChildModelAdmin):
|
||||
@@ -78,9 +84,11 @@ The models are taken from :ref:`advanced-features`.
|
||||
...
|
||||
)
|
||||
|
||||
|
||||
class ModelBAdmin(ModelAChildAdmin):
|
||||
# define custom features here
|
||||
|
||||
|
||||
class ModelCAdmin(ModelBAdmin):
|
||||
# define custom features here
|
||||
|
||||
@@ -93,5 +101,17 @@ The models are taken from :ref:`advanced-features`.
|
||||
(ModelC, ModelCAdmin),
|
||||
)
|
||||
|
||||
|
||||
class ModelBInline(admin.StackedInline):
|
||||
model = ModelB
|
||||
fk_name = 'modelb'
|
||||
readonly_fields = ['modela_ptr']
|
||||
|
||||
|
||||
class StandardModelAdmin(admin.ModelAdmin):
|
||||
inlines = [ModelBInline]
|
||||
|
||||
|
||||
# Only the parent needs to be registered:
|
||||
admin.site.register(ModelA, ModelAParentAdmin)
|
||||
admin.site.register(StandardModel, StandardModelAdmin)
|
||||
|
||||
Reference in New Issue
Block a user