To models:
from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') phone = models.TextField(max_length=24, blank=True) @receiver(post_save, sender=User) def create_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) @receiver(post_save, sender=User) def save_profile(sender, instance, **kwargs): instance.profile.save()
You can call the phone through: user.profile.phone , where user is a user object. In the same way, to the user, having a profile: profile.user .
Remember to create and execute the migrations.
Most likely you will not have profiles for already created users. To do this, run the shell: python manage.py shell and follow these steps:
from django.contrib.auth.models import User from Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.models import Profile # Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π²Π°ΡΠ΅ for user in User.objects.all(): # ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ Profile.objects.get_or_create(user=user) # Π½Π°ΠΆΠΌΠΈΡΠ΅ Π΄Π²Π°ΠΆΠ΄Ρ Enter