Luk*_*ski 11 django django-forms django-admin
我有一个内联formset,我想排除一些模型对象在formset中显示.
例如.模型B具有模型A的外键,因此它是1:n(一个对象有很多B对象)的关系.现在在一个管理编辑页面上,我有了B的内联.我想知道是否有可能以某种方式在呈现内联formset之前过滤B对象列表,因此并非所有与B对象相关的A都会进入formset.
Luk*_*ski 18
回答自己的问题似乎有点奇怪,但我找到了另一个解决方案;)
向表单集提供自定义查询集时出现问题,如果是内联表单集,则没有挂钩.所以我将BaseInlineFormSet子类化并覆盖了get_queryset方法.然后我只是在InlineModelAdmin中提供这个formset并完成了.
例:
class MyFormSet(BaseInlineFormSet):
def get_queryset(self):
if not hasattr(self, '_queryset'):
qs = super(MyFormSet, self).get_queryset().filter(main=False)
self._queryset = qs
return self._queryset
Run Code Online (Sandbox Code Playgroud)
和管理员类:
class MyInline(admin.TabularInline):
model = m.MyModel
formset = MyFormSet
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8940 次 |
| 最近记录: |