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

时间:2017-10-27 11:09:40

标签: python django django-models

我想在create function中创建具有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)

错误是此函数的无效关键字参数。 当我尝试创建用户模型时,如何在Profile模型中设置PhoneNumber值? 所有坦克

2 个答案:

答案 0 :(得分:2)

您必须分两步执行此操作,因为您要创建两个实例。用户实例必须存在才能被ForeignKey引用。 STH。沿着这些方向将起作用:

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

答案 1 :(得分:1)

您可以使用Django信号隐式处理Profile对象创建。

@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)