【问题标题】:Django formTypeError: signupinfoform.Meta.fields cannot be a stringDjango formTypeError:signupinfoform.Meta.fields 不能是字符串
【发布时间】:2019-07-05 10:04:38
【问题描述】:

我使用以下字段创建了模型,它引发了一个错误为 TypeError: signupinfoform.Meta.fields cannot be a string。您的意思是输入: ('confirm_password',)?

 from django.db import models
    from django.contrib.auth.models import User
    # Create your models here.
    class signup(models.Model):
        user = models.OneToOneField(User,on_delete=models.CASCADE)
        confirm_password = models.CharField(max_length=200)
        def __str__(self):
            return self.user.username

forms.py

from django import forms
from . models import signup

from django.contrib.auth.models import User
class signupform(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())

    class Meta:
        model = User
        fields = ('username','password','email')
class signupinfoform(forms.ModelForm):
    confirm_password = forms.CharField(widget=forms.PasswordInput())
    class Meta:
        model = signup
        fields = ('confirm_password')

【问题讨论】:

  • 发布表单,因为错误在表单中,而不是模型中
  • 请注意,错误消息不仅告诉您出了什么问题,还向您展示了如何修复它。

标签: django


【解决方案1】:
from django.contrib.auth.models import User
class signupform(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())

    class Meta:
        model = User
        fields = ('username','password','email',) -> add , to make a tuple
class signupinfoform(forms.ModelForm):
    confirm_password = forms.CharField(widget=forms.PasswordInput())
    class Meta:
        model = signup
        fields = ('confirm_password',) -> add , to make a tuple

或使用list

喜欢

fields = ['confirm_password']

没有, 结尾的() 被视为字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 2020-09-25
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    相关资源
    最近更新 更多