如果用戶已通過身份驗證并預加載數據庫中的所有信息,則嘗試加載某些表單,但我收到此錯誤,很可能是 forms.py 中出現了問題,但想法是,如果用戶已通過身份驗證,則他們不應完成該過程輸入他們的姓名和電子郵件,他們只需要發送消息。它目前對非注冊用戶來說就像一個魅力,但我以前從未為注冊用戶做過這樣的事情,所以我被困住了。forms.pyfrom django import formsfrom django.forms import ModelFormfrom .models import Messageclass NonAuthMessage(forms.ModelForm): class Meta: model = Message fields = "__all__"class AuthMessage(forms.ModelForm): def __init__(self): self.name = user.request.username self.email = user.request.email class Meta: model = Message fields = ["message"]models.pyfrom django.db import modelsfrom django.utils import timezoneclass Message(models.Model): name = models.CharField(max_length=50) email = models.EmailField() message = models.TextField(max_length=3000) date_posted = models.DateTimeField(auto_now_add=True) def __str__(self): return self.email class Meta: ordering = ['-date_posted',]views.pyfrom django.shortcuts import render, redirectfrom .models import Messagefrom .forms import NonAuthMessage, AuthMessagedef contact(request): formAuth = AuthMessage() formNonAuth = NonAuthMessage() mess = Message.objects.all() if request.user.is_authenticated: if request.method == "POST": form = AuthMessage(request.POST) if form.is_valid(): form.save() return redirect('contact') messages.success(request, 'Message sent to Alex!') else: if request.method =="POST": form = NonAuthMessage(request.POST) if form.is_valid(): form.save() return redirect('contact') messages.success(request, 'Message sent to Alex!') context = {'formAuth': formAuth, 'formNonAuth': formNonAuth, 'mess': mess} return render(request, 'contact/contact.html', context)
1 回答

青春有我
TA貢獻1784條經驗 獲得超8個贊
嘗試將所需的用戶信息直接放在視圖中而不是表單中:
if request.user.is_authenticated:
if request.method == "POST":
form = AuthMessage(request.POST)
if form.is_valid():
authmess = form.save(commit=False)
authmess.name = request.user.first_name
authmess.email = request.user.email
authmess.save()
messages.success(request, 'Message sent to Alex!')
return redirect('contact')
添加回答
舉報
0/150
提交
取消