Saya ingin menyimpan formulir sederhana di Django2

Tetapi ketika saya mengirim data formulir itu memberi saya kesalahan:

 __init__() got an unexpected keyword argument 'name'

Ini bentuk saya

class Message(forms.Form):
name = forms.CharField(max_length=20,
                       widget=forms.TextInput(
                           attrs={'class': 'form-control',
                                  'placeholder': 'Your Name'
                                  }))
email = forms.EmailField(widget=forms.TextInput(
    attrs={'class': 'form-control',
           'placeholder': 'Your Email'
           }))
messages = forms.CharField(widget=forms.Textarea(
    attrs={'rows': '5',
           'class': 'form-control',
           'placeholder': 'Write your message...'
           }))

Ini pandangan saya

 def index(request):
if request.method == 'POST':
    form = Message(request.POST)
    if form.is_valid():
        new_messages = Message(name=request.POST['name'], email=request.POST['email'],
                               messages=request.POST['messages'])
        new_messages.save()
        return redirect('index')
    else:
        form = Message()

Dan ini adalah model saya

class Message(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
messages = models.TextField()

def __str__(self):
    return self.name

Saya mencoba mengubah nama menjadi apa pun yang Anda pikirkan tetapi tidak berhasil.

Bagaimana saya bisa memperbaiki ini?

0
Masoud Khani 1 Juni 2019, 10:10

2 jawaban

Jawaban Terbaik

Model dan Formulir memiliki nama yang sama!!!!!

Coba kode ini:

class MessageForm(forms.Form):
    name = forms.CharField(max_length=20,
                       widget=forms.TextInput(
                           attrs={'class': 'form-control',
                                  'placeholder': 'Your Name'
                                  }))
    email = forms.EmailField(widget=forms.TextInput(
        attrs={'class': 'form-control',
           'placeholder': 'Your Email'
           }))
    messages = forms.CharField(widget=forms.Textarea(
        attrs={'rows': '5',
           'class': 'form-control',
           'placeholder': 'Write your message...'
           }))

def index(request):
     if request.method == 'POST':
        form = MessageForm(request.POST)
        if form.is_valid():
            Message.objects.create(**form.cleaned_data)
            return redirect('index')
        else:
            form = MessageForm()
1
katoozi 1 Juni 2019, 11:59

Anda harus melakukan seperti ini

data=form.cleaned_data

Dan gunakan kamus ini dalam model pesan, pastikan Anda memiliki bidang nama dalam model pesan Anda

-2
Balaraju M 1 Juni 2019, 07:26