首页 > 解决方案 > Django 表单错误 - 该选项不是可用选项之一

问题描述

我正在尝试在用户之间创建一个自定义消息传递平台。出于某种原因,它说我的表单在我提交时无效,当我使用 print(messageform.errors) 打印错误时,我得到:

<ul class="errorlist"><li>receiver<ul class="errorlist"><li>Select a valid choice. That choice is not one of the available choices.</li></ul></li></ul>

这很奇怪,因为我不相信我在表单的任何地方都使用了下拉菜单。有谁知道为什么会这样?

表格.py

class MessageForm(forms.ModelForm):
    class Meta:
        model = Message
        fields = ['text', 'receiver']

.html 文件

<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>

模型.py

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"
                    )

视图.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/')

标签: pythondjango

解决方案


推荐阅读