Как создать экземпляр модели
Ок, у меня есть две модели (Room & Message) и модель сообщений является дочерней по отношению к room. поэтому я хотел добавить раздел комментариев, где пользователь может комментировать темы других комнат. к сожалению, я попробовал этот код здесь, и django говорит; (Невозможно присвоить "(<Room: MYSQL Triggers>,)": "Message.room" должен быть экземпляром "Room"). То есть я не понимаю этого. пожалуйста, помогите мне разобраться, если можете.
#room model
class Room(models.Model):
host = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
topic = models.ForeignKey(Topic, on_delete=models.SET_NULL, null=True)
name = models.CharField(max_length=200)
description = models.TextField(null=True, blank=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-updated', '-created']
def __str__(self):
return self.name
#message model
class Message(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
room = models.ForeignKey(Room, on_delete=models.CASCADE)
body = models.TextField()
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.body
#ШАБЛОН ПРОСМОТРА
def room(request , pk):
room = Room.objects.get(id=pk),
comments = Message.objects.filter(room=pk).order_by('-created') #get comments
comments_no = comments.count() #count number of comments
#create comments
if request.method == 'POST':
#The problem seems to be here, but i don't understand how to fix it.
messaging = Message.objects.create(
host = request.user,
room = room,
body = request.POST.get('body')
)
return redirect('room', id=room.id)
context = {'room': room, 'comments':comments, 'noofcomm':comments_no}
return render(request, 'base/rooms.html', context)
Вы должны передать объект Room, а не Room pk. Или используйте ORM Lookup от Django:
comments = Message.objects.filter(room__id=pk).order_by('-created') #get comments