Python 使用一对一属性django创建对象

Python 使用一对一属性django创建对象,python,django,django-models,Python,Django,Django Models,我想用create函数中的set属性创建对象。 这是我的个人资料模型: class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,related_name='profile') employees = models.ManyToManyField(User, blank=True, null=True, related_name

我想用create函数中的set属性创建对象。 这是我的个人资料模型:

class Profile(models.Model):
    user = models.OneToOneField(User, 
        on_delete=models.CASCADE,related_name='profile')
    employees = models.ManyToManyField(User, blank=True, null=True, 
        related_name='boss')
    FatherName = models.CharField(max_length=20,default='',blank=True)
    NationalCode = models.CharField(max_length=20, default='')
    birth_date = jmodels.jDateField(null=True, blank=True)
    PhoneNumber = models.CharField(max_length=20,default='',unique=True)
当我创建对象时

emp = User.objects.create(first_name=FirstName, last_name=LastName, 
    username=phonenumber,user__PhoneNumber=phonenumber)
错误是此函数的无效关键字参数。
当我尝试创建用户模型时,如何在配置文件模型中设置PhoneNumber值?

您必须分两步执行,因为您要创建两个实例。用户实例必须存在,才能被ForeignKey引用。沿着这条思路做的事情将会奏效:

user = User.objects.create(first_name=FirstName, last_name=LastName, username=phonenumber)
profile = Profile.objects.create(user=user, PhoneNumber=phonenumber)

您必须分两步完成,因为您正在创建两个实例。用户实例必须存在,才能被ForeignKey引用。沿着这条思路做的事情将会奏效:

user = User.objects.create(first_name=FirstName, last_name=LastName, username=phonenumber)
profile = Profile.objects.create(user=user, PhoneNumber=phonenumber)

您可以使用Django信号隐式处理
概要文件
对象创建

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_profile(sender, instance=None, created=False, **kwargs):
    """
    Create profile whenever a user is created.
    """
    if created:
        Profile.objects.create(user=instance)

您可以使用Django信号隐式处理
概要文件
对象创建

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_profile(sender, instance=None, created=False, **kwargs):
    """
    Create profile whenever a user is created.
    """
    if created:
        Profile.objects.create(user=instance)

您不能在此处使用
user\u PhoneNumber
。这毫无意义,而且你也没有遵循命名惯例,不尊重Python的禅宗。对类属性使用PascalCase是一种致命的罪恶。不一致和混合不同的情况是通往地狱的道路。你不能在这里使用
user\uu PhoneNumber
。这毫无意义,而且你也没有遵循命名惯例,不尊重Python的禅宗。对类属性使用PascalCase是一种致命的罪恶。不一致和混合不同的情况是通往hell.tanks的途径,但因为我第一次创建用户对象时,PhoneNumber在配置文件模型中是唯一的,之后如果PhoneNumber是重复的,那么就创建了用户对象,我应该在中删除它,除非我想要一个更好的解决方案来处理这个错误,但因为PhoneNumber在配置文件模型中是唯一的配置文件模型当我第一次创建用户对象之后,如果电话号码是重复的,然后用户对象创建,我应该删除它,除非我想要一个更好的解决方案来处理这个错误