如何在邮件表单中自动设置to_user(收件人)?

时间:2019-03-04 15:10:23

标签: django django-forms django-views

模型

class Message(models.Model):
    sender = models.ForeignKey(User, related_name="sender", on_delete=models.CASCADE)
    reciever = models.ForeignKey(User, related_name="reciever", on_delete=models.CASCADE)
    title = models.CharField(max_length=50)

我很确定我有正确的主意,那就是首先创建一个按钮:

<a href="{% url 'send-message-to' profile.user.id %}" class="btn btn-primary">Send a message</a>

然后我将个人资料ID传递给我的CreateView,然后使用收到的pk查询用户:

class MessageCreateView(CreateView):
    model = Message

    fields = ['title', 'msg_content']

    def form_valid(self, form):
        form.instance.sender = self.request.user
        form.instance.receiver = User.objects.get(id=self.kwargs.get('pk'))


        return super().form_valid(form)

但是它没有按预期工作。我收到错误消息

IntegrityError at /messages/create/1/
null value in column "reciever_id" violates not-null constraint

由于某种原因,我编写的代码未填写接收者ID。 form.instance.receiver = User.objects.get(id=self.kwargs.get('pk'))

如何获取我的表单以在我的表单中自动设置收件人(to_user)?

现在发生的是,当我尝试创建一条消息时,我得到了所有不需要的可用用户的下拉列表。

0 个答案:

没有答案