Сделал форму для сообщений между пользователями(по аналогии моей же работающей формы для комментариев). И почему-то выходит эта ошибка. Ссылок по такой ошибке достаточно, но ничего из предложенного мне не помогло. Так же уже пытался и бд с миграциями удалять и заново ставить - ничего. Прописывал в поле chat nall=True, blank = True так же все мимо.
Моя модель(тут кстати буду благодарен, если кто скинет хотя бы что-то о том как корректно писать логику для чатов)
class Chat(models.Model):
DIALOG = 'D'
CHAT = 'C'
CHAT_TYPE_CHOICES = (
(DIALOG, 'Dialog'),
(CHAT, 'Chat')
)
type = models.CharField( 'Тип',max_length=1,choices=CHAT_TYPE_CHOICES,default=DIALOG )
slug = models.SlugField(unique=True)
def get_absolute_url(self):
return reverse('private_chat_url', kwargs={'slug': self.slug })
class Message(models.Model):
chat = models.ForeignKey(Chat, verbose_name="Чат", on_delete=models.CASCADE)
author = models.ForeignKey(User, verbose_name="Отправитель", on_delete=models.CASCADE)
recipient = models.ForeignKey(User, related_name='received_messages',
verbose_name="Получатель", on_delete=models.CASCADE, default=0)
message = models.TextField("Сообщение")
pub_date = models.DateTimeField('Дата сообщения', default=timezone.now)
is_readed = models.BooleanField('Прочитано', default=False)
Вью
def private_chat(request, slug):
pr_chat = get_list_or_404(Chat, slug__iexact=slug)
body_chat = Message.objects.order_by('pk')
if request.method == 'POST':
message_form = MessageForm(request.POST)
if message_form.is_valid():
message_form.instance.author = request.user
message_form.instance.post = pr_chat
message_form.save()
return redirect(pr_chat)
else:
HttpResponseNotFound("<h2>Введены неверные данные</h2>")
else:
message_form = MessageForm()
return render(request, 'chat/private_chat.html', {'pr_chat': pr_chat,
'body_chat': body_chat,
'message_form': message_form,
})
форма
class MessageForm(forms.ModelForm):
message = forms.CharField()
class Meta:
model = Message
fields = ('message',)
Ну и форма в шаблоне
<form method="post">
{% csrf_token %}
{{ message_form }}
<button type="submit" style="margin-top:1%; margin-bottom:1%; width:215px;" class="btn btn-outline-primary">Добавить</button>
</form>