首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django admin inlines表单的最小数量

Django admin inlines表单的最小数量
EN

Stack Overflow用户
提问于 2012-10-02 23:30:07
回答 5查看 5.1K关注 0票数 8

在Django中创建自定义模型管理内联时,可以设置两个参数extramax_num:要显示的额外表单的数量,以及允许用户附加到父对象的最大对象数量。

我有一个问题模型,其中每个可以有几个答案,这是内联在问题管理。大多数问题都有三个答案,所以我希望默认情况下显示三个内联;但是,当编辑一个已经有三个答案的问题时,在最有可能不会有更多答案的情况下显示三个完整的额外字段看起来很拥挤和俗气。我想要的基本上是一个min_num参数:默认情况下,我希望显示至少三个字段,如果答案少于三个,则为空,同时仍然允许用户添加更多字段,然后所有字段都将显示。

我已经找到了将这个添加到formsetsinlines中的方法,但看起来它们还没有解决。目前在Django 1.4中有什么方便的方法可以做到这一点吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-28 06:23:27

有一个补丁可以解决这个问题:

https://code.djangoproject.com/ticket/17642

票数 2
EN

Stack Overflow用户

发布于 2018-01-07 12:31:26

我必须设置extra和min_num才能正常工作

代码语言:javascript
复制
class MyInline(admin.TabularInline):
    extra = 0
    min_num = 3
票数 10
EN

Stack Overflow用户

发布于 2018-02-27 12:49:50

我最终使用了一个动态的extra值:

代码语言:javascript
复制
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所具有的验证问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12693431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档