IntegrityError(1048,“列'id'不能为空”)

2024-09-30 16:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在和Django聊天。 但我在发送文本时出现了以下错误

enter image description here

enter image description here

也许我应该把留言和表格联系起来,但是 我不能。 我的代码有什么问题

models.py

class MessageRoom(models.Model):
    post = models.ForeignKey(Post, verbose_name='MessageRoom Post', on_delete=models.CASCADE)
    inquiry_user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, null=False, related_name='inquiry_user')

    def __str__(self):
      return str(self.id)
class Message(models.Model):
    message = models.CharField(max_length=100)
    message_room = models.ForeignKey(MessageRoom, verbose_name='Message', on_delete=models.CASCADE)

    def __str__(self):
      return str(self.id)

Views.py

class MessageRoomView(LoginRequiredMixin, DetailView):
  template_name = 'adopt_animals/pets/message_room.html'
  model = MessageRoom
  form_class = MessageForm
  context_object_name = 'message_room'
  success_url = reverse_lazy('adopt_animals:message_room')

  def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    message_list = Message.objects.all()
    context['form'] = MessageForm 
    for message in message_list:
      return context

  def post(self, request, **kwargs):
    message_room = MessageRoom.objects.filter(id=self.kwargs['pk'], 
                      inquiry_user_id=self.request.user.id)
    form = MessageForm(request.POST)
    if form.is_valid():
      # Try to link message_room_id and message.id
      form.message_room_id = self.kwargs['pk']
      form.save()
    else:
      print(form.errors)
    return redirect('adopt_animals:message_room', pk=message_room[0].id)

forms.py

class MessageForm(forms.ModelForm):
  message = forms.CharField(label='message', required=True)

  class Meta:
      model = Message
      fields = [
          'message',
      ]

message_room.html

<form action="{% url 'adopt_animals:message_room' message_room.id %}" method="POST">
  {% csrf_token %}
  {{ form.errors }}
    <div class="send-msg">
       {{ form.message }}
       <button class="btn btn-warning" type="submit">Send</button>
    </div>
</form>

Tags: nameselfformidmessagereturnmodelsdef