gpt4 book ai didi

python - 如何在 ModelAdmin 中动态操作 Django 中的表单字段?

转载 作者:太空狗 更新时间:2023-10-30 02:23:09 25 4
gpt4 key购买 nike

我有一个字段(slug)在模型中是“必需的”,但想将 ModelAdmin 类中的字段更改为可选字段。如果用户不填写,则由其他字段(姓名)自动填写。

class SomeModel(model.Model):
name = model.CharField(max_length=255)
slug = model.SlugField(unique=True, max_length=255)

我尝试了多种方式来做到这一点,例如在 ModelAdmin 中覆盖 get_form() 或使用 ModelForm 类并专门指定表单。

class SomeModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(self.__class__, self).get_form(request, obj, **kwargs)
form.slug.required = False
return form

但是,这两种解决方案都不适合我。除了手动创建表单之外,还有其他更快的解决方案吗?

我有很多这样的表格,手工制作可能很乏味且难以维护。

最佳答案

我自己在解决同样的问题时通过谷歌找到了这个页面。以下内容也适用于 ModelAdmin:

def get_form(self, *args, **kwargs):
form = super(SomeModelAdmin, self).get_form(*args, **kwargs)
form.base_fields['slug'].required = False
return form

从更新后的 ModelFormMetaclass 创建的后续表单将不需要 slug 字段。

这在我的情况下效果更好,我只有一个类,我需要在其中不需要该字段,并且不需要在保存时进行任何数据转换。如果您有很多类,或者需要进行数据转换,GoogleDroid 的解决方案会更好。

关于python - 如何在 ModelAdmin 中动态操作 Django 中的表单字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com