Estoy tratando de crear una aplicación que le permita a mi usuario crear una casa y luego poder agregar ocupantes.
Sin embargo, mi problema es que el nombre de la casa debe ser único, hasta ahora guarda el nombre como Auth.user, ¿cómo obtengo su nombre de usuario y luego lo guardo junto con la casa? Entonces, por ejemplo, "Jonsmith House"
esto es lo que tengo hasta ahora
User = settings.AUTH_USER_MODEL class House(models.Model): owner = models.ForeignKey(User, null=True, blank=True) name = models.CharField(max_length=50) def save(self, *args, **kwargs): self.name = User super(House, self).save(*args, **kwargs) def __unicode__(self): return smart_text(self.name) class Occupant(models.Model): house = models.ForeignKey(House) occupants = models.ForeignKey(User)Espero que esto tenga sentido, gracias
Por lo que entiendo, necesita una aplicación que le permita a su usuario crear una Casa y luego poder agregar Ocupantes.
Además, el nombre de su casa debe ser el que tiene su usuario (quien lo creó) + "Casa".
Entonces algo como esto debería ser suficiente.
class House(models.Model): # name of the house name = models.CharField(max_length=20, null=True, blank=True) owner = models.OneToOneField(User, null=True, blank=True)Dado que solo necesita un usuario único como propietario de la casa y cada casa tiene un solo propietario, debe establecer la relación OneToOne. Si necesita consultar su hora como mencionó (junto con el nombre de usuario del propietario), anule el método de guardar,
def save(self, *args, **kwargs): self.name = "%s House" % (self.owner.username) super(House, self).save(*args, **kwargs)Ahora, para un ocupante, cada usuario puede ser ocupante de una casa, pero solo de una, supongo.
class Occupant(models.Model): house = models.ForeignKey(House, null=True, blank=True) user = models.ForeignKey(User, null=True, blank=True) name = models.CharField(max_length=32, null=True, blank=True)