You can’t do
LivingRoom.objects.create(user=instance)
because you have an __init__ method that does NOT take user as argument.
You need something like
#signal function: if a user is created, add control livingroom to the user
def create_control_livingroom(sender, instance, created, **kwargs):
if created:
my_room = LivingRoom()
my_room.user = instance
Update
But, as bruno has already said it, Django’s models.Model subclass’s initializer is best left alone, or should accept *args and **kwargs matching the model’s meta fields.
So, following better principles, you should probably have something like
class LivingRoom(models.Model):
'''Living Room object'''
user = models.OneToOneField(User)
def __init__(self, *args, temp=65, **kwargs):
self.temp = temp
return super().__init__(*args, **kwargs)
Note – If you weren’t using temp as a keyword argument, e.g. LivingRoom(65), then you’ll have to start doing that. LivingRoom(user=instance, temp=66) or if you want the default (65), simply LivingRoom(user=instance) would do.