如何轻松获得OneToOne关系?

时间:2017-11-16 13:26:40

标签: python django django-rest-framework

我有两个模型,名称为User和Account,Account to User是一对一的关系:

class User(AbstractUser):

    real_name = models.CharField(max_length=12, null=True,blank=True)
    phone = models.CharField( max_length=11)   
    email_is_validated = models.BooleanField(default=False)   
    qq = models.CharField(max_length=10, null=True, blank=True)

class Account(models.Model):

    user = models.OneToOneField(to=User)  
    balance = models.DecimalField(max_digits=16, decimal_places=2, default=0.00)  
    total_charge = models.DecimalField(max_digits=16, decimal_places=2, default=0.00)   
    total_consume = models.DecimalField(max_digits=16, decimal_places=2, default=0.00)  

所以,在这种情况下,在我的序列化器中:

class OrderCreateSerializer(ModelSerializer):

     def create(self, validated_data):

        request = self.context.get("request")
        if request and hasattr(request, "user"):
            user = request.user

我得到了用户,我可以使用user.account获取帐户吗? 或者我是否需要在用户模型中执行某些操作,例如user @property。 (这些是我异想天开的想法) 或者是否有方便的方式来获取用户的帐户实例?

1 个答案:

答案 0 :(得分:0)

为您的模型设置related_name。

我的代码示例:

class Profile(models.Model):
    projects = models.ManyToManyField(Project, related_name='profiles')
    ...

class Project(models.Model):
    ...

现在我可以使用profile.projects.all()来调用Profile中的Projects 我可以使用project.profiles.all()

从Project调用Profiles

文档: https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.related_name