Django表单提交值

2024-04-27 00:59:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以现在我只能用Django的消息应用程序了。你知道吗

因此,我将一个用户名列表传递给我的模板,并将其传递给一个自动完成建议的输入字段。你知道吗

现在当我保存模型时,它说“接收者必须是一个用户实例”。你知道吗

如何更改/操作该值并在数据库中查找与username关联的用户(就像我在clean&save函数中尝试的那样,但我认为错误消息出现在行之前)

非常感谢!你知道吗

编辑代码:

class MessageForm(forms.ModelForm):
    receiver = forms.CharField(required=True)
    subject = forms.CharField()

    def __init__(self, *args, **kwargs):
        receiver_list = kwargs.pop('receiver_list', None)
        users_list = kwargs.pop('users_list', None)
        super(MessageForm, self).__init__(*args, **kwargs)
        self.fields['receiver'].widget = ListTextWidget(name='receiver_list', users_list=users_list)

    def clean(self):
        cleaned_data = super(MessageForm, self).clean()
        receiver = User.objects.get(username =cleaned_data.get("receiver"))

    def save(self, commit=True):

        message = super(MessageForm, self).save(commit=False)

        # clean data
        message.receiver = User.objects.get(username =self.cleaned_data['receiver'])
        message.subject = self.cleaned_data['subject']
        message.text = self.cleaned_data['text']

        if commit:
            message.save()
        return message

    class Meta:
        model = Message
        fields = {'receiver', 'subject', 'text'}
        labels = {'receiver': 'receiver', 'subject': 'subject', 'text': 'text'}
        widgets = {'text': forms.Textarea(attrs={'cols': 80, })}

Tags: textselfcleanmessagedatasaveusernameforms
1条回答
网友
1楼 · 发布于 2024-04-27 00:59:03

您已经在clean方法中定义了一个局部变量receiver,但是您没有对它做任何操作。您需要将其分配回已清理的数据。你知道吗

cleaned_data['receiver'] = receiver

相关问题 更多 >