gpt4 book ai didi

python - 如何为管理站点创建自定义清理方法?

转载 作者:太空狗 更新时间:2023-10-30 01:30:01 24 4
gpt4 key购买 nike

我想在管理员验证之前填充一个字段。

模型.py

class Ad(models.Model):
.....
manual_code = models.BooleanField("Manual Code", default=False)
code = models.TextField("Code")

管理员.py

class MyAdAdminForm(forms.ModelForm):
class Meta:
model = Ad

def clean(self):
cleaned_data = self.cleaned_data
cleaned_data['code'] = "dadad"
print cleaned_data
return cleaned_data

class AdAdmin(admin.ModelAdmin):
form = MyAdAdminForm

admin.site.register(Ad, AdAdmin)

最终我想生成整个“代码”字段,但我仍然在管理中收到该字段为空的错误,尽管我可以在 shell 中看到它的值(“dadad”)。

我也试过

def clean_code(self):

而且它根本没有调用该函数。

我也试过了

def save_model(request,....):

在 AdAdmin 类中,但它也没有调用它。

那我该怎么办呢?

最佳答案

除了调用您的自定义 clean 方法外,Django 还会单独验证每个表单字段。导致必填字段错误的是个别字段检查。有关完整详细信息,请参阅 Form and field validation 上的 Django 文档.

如果您不需要用户在代码字段中输入,您可以覆盖表单的 __init__ 方法,并设置 required=False

class MyAdAdminForm(forms.ModelForm):
class Meta:
model = Ad

def __init__(self, *args, **kwargs):
super(MyAdAdminForm, self).__init__(*args, **kwargs)
self.fields['code'].required = False

一旦不需要该字段,表单在验证期间调用clean_code 方法,因此您可以在那里设置值。

关于python - 如何为管理站点创建自定义清理方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631650/

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