如何将URL变量传递给django admin内联表单?

时间:2014-02-21 18:51:56

标签: django django-admin

我想从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。欢迎任何建议!

0 个答案:

没有答案