我有一个模型,我想在我的管理站点中仅作为其他模型的子模型来维护,而不能直接通过其自己的变更列表维护。它有太多字段无法以内联方式进行明智地维护,因此我正尝试通过从父模型的管理员到添加表单的链接来添加新实例。
所以我有
### models.py
class A(models.Model):
# class A's stuff
class B(models.Model):
fk_a = models.ForeignKey(A)
# etc.
### admin.py
class BInline(admin.TabularInline):
model = AreaMeetingOfficeHeld
show_change_link = True
extra = 0
max_num = 0 # to suppress inline "add another"
fields = (<SUBSET_OF_FIELDS>)
# ... etc
@admin.register(A)
class AAdmin(admin.ModelAdmin):
inlines = (BInline,)
# ... etc
### templates/admin/myapp/a/change_form.html
{% extends "admin/change_form.html" %}
{% block object-tools %}
{% if has_change_permission %}
<a href="{% url 'admin:myapp_b_add'%}?fk_a_id={{original.pk}}">
</i>Add B
</a>
{% endif %}
{% endblock %}
...到目前为止一切都很好。链接正确,实例化了B的添加形式。据我遍历堆栈跟踪和按打印调试语句所看到的,它在fk_a.id
数据中看到了initial
。但是随后却什么也没做:正确的A实例既不显示也不保存。
我在这里想念什么?我假设我需要重写Form或ModelAdmin for B中的某些内容,但是呢?