我有两个模型,名称为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。 (这些是我异想天开的想法) 或者是否有方便的方式来获取用户的帐户实例?
答案 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