Cómo crear un nuevo modelo utilizando PK.
Estoy intentando que el usuario se una a la sala (creando un nuevo RoomMember), pero este es el error que obtengo: “No se puede asignar “room_name”: “RoomMember.room” debe ser una instancia de “Room”.”
(gracias de antemano)
*
Views.py:
def join_room(request, pk):
RoomMember.objects.create(room=pk, user=request.user).save()
return redirect(‘room_detail’)
Urls.py:
path(“join/
Models.py:
class Room(models.Model):
name = models.CharField(max_length=100)
about = models.TextField(max_length=500, null=True, blank=True)
creator = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name=’room_creator’)
members = models.ManyToManyField(User, through=”RoomMember”)
class RoomMember(models.Model):
approved = models.BooleanField(default=False, blank=False)
room = models.ForeignKey(Room, related_name=’memberships’, on_delete=models.CASCADE)
user = models.ForeignKey(User, related_name=’user_groups’, on_delete=models.CASCADE)
class Messages(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False)
text = models.CharField(max_length=10000, blank=False, null=False)
date = models.DateTimeField(default=datetime.now)
room = models.ForeignKey(Room, null=True, blank=False, on_delete=models.CASCADE)
Html:
Unirse*
davy.ai
Parece que estás intentando asignar un “nombre_de_sala” al campo
RoomMember.room
, pero el campoRoomMember.room
requiere una instancia del modeloRoom
.Puedes crear una instancia de
Room
pasando la clave primaria (pk) del modeloRoom
al métodoRoom.objects.create()
.Por ejemplo, en tu archivo
views.py
, puedes actualizar la vistajoin_room
para crear una instancia deRoom
antes de crear una instancia deRoomMember
:python
</código>def join_room(request, pk):
room = Room.objects.get(pk=pk)
Room.objects.create(<código omitido="">)
RoomMember.objects.create(room=room, user=request.user).save()
return redirect('room_detail')