django - 将对象(字段值)传递到视图中并将其保存在模型上
问题描述
我的表单中有一个名为“rep”的字段,我想要视图,查询等于“rep”的用户并将其传递给我的视图并将其保存到模型中的收件人中:
我尝试了以下行: form.instance.recipient = Message.objects.get(recipient=self.request.rep)
但我明白了
'WSGIRequest' object has no attribute 'rep'
看法 :
视图.py
类撰写(CreateView):
model = Message
form_class=ComposeForm
template_name='django_messages/compose.html'
def form_valid(self,form):
# form.instance.recipient = Message.objects.get(recipient=self.request.rep)
form.instance.sender =self.request.user
return super(compose,self).form_valid(form)
表格.py
class ComposeForm(forms.ModelForm):
"""
A simple default form for private messages.
"""
class Meta:
model = Message
# fields ='__all__'
fields=['rep','subject','body',]
#recipient = CommaSeparatedUserField(label=_(u"Recipient"))
# subject = forms.CharField(label=_(u"Subject"), max_length=140)
# subject='hello'
body = forms.CharField(label=_(u"Body"),
widget=forms.Textarea(attrs={'rows': '12', 'cols':'55'}))
rep=forms.CharField()
模型.py
class Message(models.Model):
"""
A private message from user to user
"""
subject = models.CharField(_("Subject"), max_length=140)
body = models.TextField(_("Body"))
sender = models.ForeignKey(AUTH_USER_MODEL, related_name='sent_messages', verbose_name=_("Sender"), on_delete=models.PROTECT)
recipient = models.ForeignKey(AUTH_USER_MODEL, related_name='received_messages', null=True, blank=True, verbose_name=_("Recipient"), on_delete=models.SET_NULL)
parent_msg = models.ForeignKey('self', related_name='next_messages', null=True, blank=True, verbose_name=_("Parent message"), on_delete=models.SET_NULL)
sent_at = models.DateTimeField(_("sent at"), null=True, blank=True)
read_at = models.DateTimeField(_("read at"), null=True, blank=True)
replied_at = models.DateTimeField(_("replied at"), null=True, blank=True)
sender_deleted_at = models.DateTimeField(_("Sender deleted at"), null=True, blank=True)
recipient_deleted_at = models.DateTimeField(_("Recipient deleted at"), null=True, blank=True)
解决方案
在您的视图中检查表单是否为有效,如果是,您可以访问表单数据,如下所示。
if form.is_valid():
form.cleaned_data['rep']
此时您仍然可以直接从 request.POST 访问未经验证的数据,但经过验证的数据更好。
Django 文档在文档Django docs |中有一个类似的示例。 使用表单
'WSGIRequest' object has no attribute 'rep'
出现此错误的原因是request
对象中没有直接包含表单数据,它保存在POST
键中。
推荐阅读
- ios - 控制被建模数据的身份意味着什么?
- jquery - 将 html 表转换为 Json 数据并将数据传递给 jquery 中的 ajax 调用
- cordova - deviceReady 事件未触发
- node.js - 如何将 knex 迁移打包到模块中?
- python - 如何使用文本文件从列表中删除停用词
- firebase - 教程文档中的简单 Firebase 云功能“无法处理请求”
- vue.js - 如何在 vue-cli 3 中添加 cssnano 优化规则?
- cobalt - 丢帧测试用例在 Qual-E 中失败
- android - 错误:找不到资源整数/google_play_services_version(又名 app:integer/google_play_services_version)
- java - 具有类主体和数据的枚举类型