在Django中创建自定义模型管理内联时,可以设置两个参数extra和max_num:要显示的额外表单的数量,以及允许用户附加到父对象的最大对象数量。
我有一个问题模型,其中每个可以有几个答案,这是内联在问题管理。大多数问题都有三个答案,所以我希望默认情况下显示三个内联;但是,当编辑一个已经有三个答案的问题时,在最有可能不会有更多答案的情况下显示三个完整的额外字段看起来很拥挤和俗气。我想要的基本上是一个min_num参数:默认情况下,我希望显示至少三个字段,如果答案少于三个,则为空,同时仍然允许用户添加更多字段,然后所有字段都将显示。
我已经找到了将这个添加到formsets和inlines中的方法,但看起来它们还没有解决。目前在Django 1.4中有什么方便的方法可以做到这一点吗?
发布于 2012-12-28 06:23:27
有一个补丁可以解决这个问题:
发布于 2018-01-07 12:31:26
我必须设置extra和min_num才能正常工作
class MyInline(admin.TabularInline):
extra = 0
min_num = 3发布于 2018-02-27 12:49:50
我最终使用了一个动态的extra值:
class AnswerInline(admin.TabularInline):
model = Answer
initial_num = 3
def get_extra(self, request, obj=None, **kwargs):
if obj is not None:
return max(self.initial_num - obj.answers.count(), 1)
return self.initial_num这确保了有3个表单,或者比填充的表单数量多一个表单,并且不会遇到min_num所具有的验证问题。
https://stackoverflow.com/questions/12693431
复制相似问题