我想从URL参数预先填充管理表单中的值。对于普通字段,只需将/?field_name = value参数添加到URL即可。但是,我的字段位于表单内的Admin Inline Formset中。有没有办法将URL参数传递给内联表单?例如:
models.py:
class Parent(Model):
...
class Child(Model):
name = CharField(max_length=20)
provenance = ManyToManyField('Provenance')
class Provenance(Model):
child = ForeignKey(Child)
parent = ForeignKey(Parent)
admin.py:
class ProvenanceInline(admin.StackedInline):
model = Provenance
form = myforms.ProvenanceForm
...
class ChildAdmin(admin.ModelAdmin):
form = myforms.ChildForm
[inlines] = ProvenanceInline
...
现在,我有一个用于显示Parent对象的自定义视图,在此视图中,我希望有一个用于创建该Parent的Child的链接。从理论上讲,这可行:
<a href="{%url 'admin:myapp_child_add'%}?parent={{origin.pk}}">Add Child</a>
问题是“父”字段隐藏在InlineAdmin Formset中。如何让ProvenanceForm看到传递给ChildForm的URL变量?
我尝试在ProvenanceInline中覆盖get_formset
或修改ChildAdmin中的get_inline_instances
,但我没有到达任何地方。 (顺便说一下,我的ChildForm被修改,以便它将request
变量传递给它的构造函数。也许这里也可以使用self.request
。欢迎任何建议!