Skip to main content
 首页 » 编程设计

python之使用空字段和空白字段创建 Django 表单

2025年01月19日22jyk

我正在尝试创建一个表单,其中两个字段都是可选的,但是,在设置 null 和 blank 时我总是收到错误消息。我做错了什么?

错误

super(CharField, self).__init__(*args, **kwargs) 
TypeError: __init__() got an unexpected keyword argument 'blank' 

表单.py

class EditProfile(forms.Form): 
    """ 
    A form that lets a user change their profile information 
    """ 
        first_name = forms.CharField( 
        label=("Fornavn"), 
        strip=False, 
        blank=True, 
        null=True 
    ) 
    last_name = forms.CharField( 
        label=("Efternavn"), 
        strip=False, 
        blank=True, 
        null=True, 
    ) 
    def __init__(self, user, *args, **kwargs): 
        self.user = user 
        super().__init__(*args, **kwargs) 
 
    def save(self, commit=True): 
        first_name = self.cleaned_data["first_name"] 
        last_name = self.cleaned_data["last_name"] 
        self.user.first_name = first_name 
        self.user.last_name = last_name 
        if commit: 
            self.user.save() 
        return self.user 

请您参考如下方法:

正如@danielcorreia 所说,您不在表单中使用blank,而是使用required = False。

class EditProfile(forms.Form): 
    """ 
    A form that lets a user change their profile information 
    """ 
        first_name = forms.CharField( 
        label=("Fornavn"), 
        strip=False, 
        required=False 
    ) 
    last_name = forms.CharField( 
        label=("Efternavn"), 
        strip=False, 
        required=False 
    ) 
    def __init__(self, user, *args, **kwargs): 
        self.user = user 
        super().__init__(*args, **kwargs) 
 
    def save(self, commit=True): 
        first_name = self.cleaned_data["first_name"] 
        last_name = self.cleaned_data["last_name"] 
        self.user.first_name = first_name 
        self.user.last_name = last_name 
        if commit: 
            self.user.save() 
        return self.user