Как автоматически установить to_user (получатель) в форме моего сообщения? - PullRequest
0 голосов
/ 04 марта 2019

Модели

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>

Затем я передаю идентификатор профиля в свой 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

По какой-то причине написанный мной код не заполняет идентификатор получателя.form.instance.receiver = User.objects.get(id=self.kwargs.get('pk'))

Как мне заставить мою форму автоматически устанавливать получателя (to_user) в моей форме?

Что происходит сейчас, так это то, что когда я пытаюсь создать сообщение, я получаювыпадающий список всех доступных пользователей, что нежелательно.

...