Django堆叠内联管理员问题

时间:2011-02-11 15:14:19

标签: django django-admin django-orm

使用Django 1.2我有一个堆叠的内联管理员,上面有很多字段。我需要根据内联存在的父对象限制多对多的选择。例如,我在WidgetPart管理员上有Widget内联。在我编辑现有Widget时,我需要根据与正在编辑的WidgetPart.foo相关的逻辑来限制Wiget个选项。我似乎无法使用formfield_for_manytomany执行此操作,因为它不仅不提供任何obj相关信息,而且request参数在使用时似乎始终为None在内联。还有另一种方式吗?

1 个答案:

答案 0 :(得分: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)