首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django中的内联表单集-删除某些字段

Django中的内联表单集-删除某些字段
EN

Stack Overflow用户
提问于 2009-02-18 00:32:45
回答 3查看 10.7K关注 0票数 10

我需要创建一个内联表单集,

a)从正在显示的MyModel中完全排除某些字段

b)显示一些字段MyModel,但阻止它们被编辑。

我尝试使用下面的代码,使用values()将查询集过滤为我希望返回的那些值。然而,这失败了。

有谁有什么想法吗?

代码语言:javascript
运行
复制
class PointTransactionFormset(BaseInlineFormSet):
    def get_queryset(self):
        qs = super(PointTransactionFormset, self).get_queryset()
        qs = qs.filter(description="promotion feedback")
        qs = qs.values('description','points_type') # this does not work
        return qs

class PointTransactionInline(admin.TabularInline):
    model = PointTransaction
    #formset = points_formset()
    #formset = inlineformset_factory(UserProfile,PointTransaction)
    formset = PointTransactionFormset
EN

回答 3

Stack Overflow用户

发布于 2011-01-26 11:55:06

文档中似乎没有提到的一件事是,您可以在模型表单集的参数中包含表单。例如,假设您有一个person模型表单,您可以通过执行以下操作在模型表单集中使用它

代码语言:javascript
运行
复制
PersonFormSet = inlineformset_factory(User, Person, form=PersonForm, extra=6)

这允许您在模型表单级别上执行所有表单验证、排除等操作,并让工厂对其进行复制。

票数 12
EN

Stack Overflow用户

发布于 2009-03-07 20:30:21

这是在管理员中使用的表单集吗?如果是这样,只需在InlineModelAdmin上设置"exclude = 'field1','field2'“即可排除字段。要显示一些不可编辑的字段值,您必须创建一个简单的自定义小部件,它的render()方法只返回值,然后覆盖formfield_for_dbfield()方法以将小部件分配给适当的字段。

如果这不是供管理员使用的,而是供其他地方使用的表单集,那么您应该在传递给表单集构造函数的ModelForm子类中进行上述自定义( Meta内部类中的exclude属性,__init__方法中的小部件覆盖)。(如果您使用的是Django1.2或更高版本,则可以直接使用readonly_fields )。

我可以更新代码示例,如果你澄清你在哪种情况下(管理员或非管理员)。

票数 6
EN

Stack Overflow用户

发布于 2009-09-09 10:43:34

我刚刚遇到了一个类似的问题(不是针对管理员,而是针对面向用户的站点),我发现您可以将想要显示的表单集和字段传递到inlineformset_factory中,如下所示:

代码语言:javascript
运行
复制
factory = inlineformset_factory(UserProfile, PointTransaction, 
                formset=PointTransactionFormset,
                fields=('description','points_type'))
formset = factory(instance=user_profile, data=request.POST)

其中user_profile是一个UserProfile

需要注意的是,如果底层模型所需的字段没有包含在传递到inlineformset_factory中的字段列表中,那么这可能会导致验证问题,但任何类型的表单都是如此。

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

https://stackoverflow.com/questions/559361

复制
相关文章

相似问题

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