(django 1.2.4)
我有两个不同的无关(他们之间没有外键关系)django模型。 例如,让我们说:'学校'和'老师'。
我需要的是,当我在django管理界面中打开添加/编辑视图时,“学校”对象具有教师对象的内联formset。很明显,这不是FK关系,而是逻辑关系(例如:与学校位于同一国家的教师......)。
我需要显示的表格是标准型号表格。 我有一个函数可以给我给定学校的教师列表(如果需要的话,查询集)。
是否有可能实现这样的目标?
答案 0 :(得分:3)
我的问题不是完全解决方案,但我最终继承了ModelAdmin类并重写了change_view方法,实现了我需要的功能(检索我需要的对象并将它们传递给context_form模板,我也扩展了它)。
...最终真的很喜欢Django AdminSite的可扩展性
答案 1 :(得分:1)
这样做有合理的理由值得怀疑。例如,教师拥有学校的外键是最合乎逻辑的。但是,我最近解决了这个问题,后来才意识到这毕竟不是一个好主意。因为有时只是看到它表达了想到更好的解决方案,我提供了解决方案:
将非相关模型作为内联放入的问题是parent_model是完全错误的。在这种情况下,parent_model是School,这是不正确的并导致异常。假设Teacher有一个真正的父级,解决方案是更正InlineModelAdmin子类中的parent_model字段。您可以通过覆盖init func:
来实现class TeacherInline(admin.TabularInline):
def __init__(self, parent_model, admin_site):
# override to permit change parent_model from School to Teacher-Parent
# Assume Teacher's parent is Employer
super(TeacherInline, self).__init__(Employer, admin_site)