【问题标题】:Django stacked inline admin questionDjango堆叠内联管理问题
【发布时间】:2011-06-25 15:13:04
【问题描述】:
使用 Django 1.2 我有一个堆叠的内联管理员,上面有多对多字段。我需要根据内联存在的父对象来限制多对多的选择。例如,我在Widget 管理员上有一个WidgetPart 内联。当我编辑现有的Widget 时,我需要根据与正在编辑的Wiget 相关的逻辑来限制WidgetPart.foo 的选择。我似乎无法使用formfield_for_manytomany 执行此操作,因为它不仅没有提供任何obj 相关信息,而且它的request 参数似乎总是在内联时使用None。还有其他方法吗?
【问题讨论】:
标签:
django
django-admin
django-orm
【解决方案1】:
你可以在你的 InlineAdmin 类上做这样的事情:
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "foo":
kwargs["queryset"] = SomeModel.objects.filter(something=something)
return db_field.formfield(**kwargs)
return super(YourModel, self).formfield_for_manytomany(db_field, request, **kwargs)