所以现在我只能用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, })}
您已经在
clean
方法中定义了一个局部变量receiver
,但是您没有对它做任何操作。您需要将其分配回已清理的数据。你知道吗相关问题 更多 >
编程相关推荐