所以目前我在Django中遇到了一个Message应用程序。
所以我将用户名列表传递给我的模板到输入字段,以便自动填充建议将邮件发送给谁。
现在当我保存模型时,它说"接收者必须是用户实例"。
如何更改/操作值并在我的数据库中查找关联用户的用户名(就像我在干净和保存功能中尝试过的那样,但我认为错误消息出现在行之前)
非常感谢!
编辑代码:
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, })}
答案 0 :(得分:0)
您已在receiver
方法中定义了本地变量clean
,但您没有对其执行任何操作。您需要将其分配回已清理的数据。
cleaned_data['receiver'] = receiver