gpt4 book ai didi

python - 为什么 django.forms.CharField 中缺少 "blank",但存在于 django.db.models.CharField 中?

转载 作者:太空狗 更新时间:2023-10-29 21:16:47 25 4
gpt4 key购买 nike

背景

我有一个模型,其中有两个字段设置为空白:

class News(models.Model):                                                                                                                                                                                           
title = models.CharField(max_length = 50, blank = True)
info = models.TextField(blank = True)

问题是我想在构建表单时动态设置max_length,所以我有一个自定义表单:

class NewsForm(forms.ModelForm):                                                                                                                                                                                    
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)

title_max_length = 20
info_max_length = 100

self.fields["title"] = forms.CharField(max_length = title_max_length)
self.fields["info"] = forms.CharField(
widget = forms.Textarea,
validators = [
MaxLengthValidator(info_max_length)
]
)

注意:这两个长度值实际上是从数据库中获取的,但我选择不包含该代码以使示例更短。

问题

当我使用这些自定义字段时,blank 选项被覆盖/忽略。

我尝试将 max_length、小部件和验证器添加到现有字段中,如下所示:

class NewsForm(forms.ModelForm):                                                                                                                                                                                    
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)

title_max_length = 20
info_max_length = 100

self.fields["title"].max_length = title_max_length
self.fields["info"].widget = forms.Textarea
self.fields["info"].validators = [MaxLengthValidator(info_max_length)]

执行此操作时,blank 选项有效,但动态 max_length 未应用于表单。

我试图查看 django 源代码,但我是新手,所以现在无法接受。

有什么方法可以实现吗?

最佳答案

创建表单时,除了 max_length、小部件和验证器之外,将以下参数添加到 CharField:

forms.CharField(...,required = False)

在 Django 中,模型中的 blank=True 与表单中的 required=False 相关。

关于python - 为什么 django.forms.CharField 中缺少 "blank",但存在于 django.db.models.CharField 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16404879/

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