Python Django表单错误-该选项不是可用选项之一
我正在尝试在用户之间创建一个自定义消息传递平台。出于某种原因,当我提交表单时,它会说我的表单无效,当我用print(messageform.errors)打印错误时,我得到: html文件Python Django表单错误-该选项不是可用选项之一,python,django,Python,Django,我正在尝试在用户之间创建一个自定义消息传递平台。出于某种原因,当我提交表单时,它会说我的表单无效,当我用print(messageform.errors)打印错误时,我得到: html文件 <form action="" method="post"> {% csrf_token %} <input type="text" name="text" value="" /> <label for="text">Enter your mes
<form action="" method="post">
{% csrf_token %}
<input type="text" name="text" value="" />
<label for="text">Enter your message here</label><br/>
<input type="text" name="receiver" value="" />
<label for="receiver">id of receiver</label><br/>
<input type="submit" value="Send" />
</form>
views.py
usermodel = get_user_model()
if request.method == "POST" and not signupform.is_valid():
messageform = MessageForm(request.POST)
print(messageform.errors)
if messageform.is_valid():
receiverid = messageform.cleaned_data['receiver']
newmessage = messageform.save(commit=False)
newmessage.sender = request.user
newmessage.receiver = usermodel.objects.filter(username=receiverid)
newmessage.text = messageform.cleaned_data['text']
new_profile.save()
return HttpResponseRedirect('/profile/')
这是django中
ForeignKey
字段的默认输入类型。您可能希望在表单中添加一个新的receiver
字段作为文本输入,然后在视图中使用它。否则,您可以呈现表单字段中的HTML输入,该字段将显示为下拉列表。@Rohan我为receiver添加了表单字段(charfield),我得到的错误是—“Message.receiver”必须是“User”实例。“查看myviews.py,我认为我已经在呈现表单字段中的HTML输入了。我正在将newmessage.receiver设置为usermodel(我的自定义用户模型,称为User)对象,所以我不确定它为什么会抛出该错误
<form action="" method="post">
{% csrf_token %}
<input type="text" name="text" value="" />
<label for="text">Enter your message here</label><br/>
<input type="text" name="receiver" value="" />
<label for="receiver">id of receiver</label><br/>
<input type="submit" value="Send" />
</form>
class Message(models.Model):
text = models.TextField(max_length=10000, blank=True)
sender = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null = True,
related_name="sender"
)
receiver = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null = True,
related_name="receiver"
)
usermodel = get_user_model()
if request.method == "POST" and not signupform.is_valid():
messageform = MessageForm(request.POST)
print(messageform.errors)
if messageform.is_valid():
receiverid = messageform.cleaned_data['receiver']
newmessage = messageform.save(commit=False)
newmessage.sender = request.user
newmessage.receiver = usermodel.objects.filter(username=receiverid)
newmessage.text = messageform.cleaned_data['text']
new_profile.save()
return HttpResponseRedirect('/profile/')