Модели
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) в моей форме?
Что происходит сейчас, так это то, что когда я пытаюсь создать сообщение, я получаювыпадающий список всех доступных пользователей, что нежелательно.