es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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//room/”, views.join_room, name=”join_room”),

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*

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando asignar un “nombre_de_sala” al campo RoomMember.room, pero el campo RoomMember.room requiere una instancia del modelo Room.

    Puedes crear una instancia de Room pasando la clave primaria (pk) del modelo Room al método Room.objects.create().

    Por ejemplo, en tu archivo views.py, puedes actualizar la vista join_room para crear una instancia de Room antes de crear una instancia de RoomMember:

    python
    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')
    </código>

Comments are closed.