python – Django:模型之间的参考

前端之家收集整理的这篇文章主要介绍了python – Django:模型之间的参考前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

救命!

我有以下两种型号:

  1. class Account(models.Model):
  2. username = models.OneToOneField(User,primary_key=True,unique=True)
  3. receiveaddress = models.CharField(max_length=40,blank=True,null=True,unique=True)
  4. balance = models.DecimalField(max_digits=16,decimal_places=8,default=0)
  5. def __str__(self):
  6. return str(self.username)
  7. class Deposits(models.Model):
  8. receiveaddress = models.CharField(max_length=40,unique=True)
  9. amount = models.DecimalField(max_digits=16,default=0)
  10. user = ?????????????????
  11. created_at = models.DateTimeField(auto_now_add=True)
  12. updated_at = models.DateTimeField(auto_now=True)
  13. confirmed = models.BooleanField(default=False)
  14. accounted = models.BooleanField(default=False)
  15. def __str__(self):
  16. return str(self.receiveaddress)

例:
Visualization

我的问题:

我希望“Deposits.user”自动引用此“receiveaddress”所属的用户.在这个例子中,那是TIM.我浪费了6个小时试图搞清楚,我做错了什么?

提前致谢.

最佳答案
我认为这只是一个设计问题.为什么要放两个具有相同信息的字段,因为用户拥有receiveaddress帐户,将用户添加为外键将足够清晰,我建议如下:

  1. class Account(models.Model):
  2. username = models.OneToOneField(User,default=0)
  3. def __str__(self):
  4. return str(self.username)
  5. class Deposit(models.Model):
  6. amount = models.DecimalField(max_digits=16,default=0)
  7. user = models.ForeignKey(User,related_name="deposits")
  8. created_at = models.DateTimeField(auto_now_add=True)
  9. updated_at = models.DateTimeField(auto_now=True)
  10. confirmed = models.BooleanField(default=False)
  11. accounted = models.BooleanField(default=False)
  12. def __str__(self):
  13. return str(self.user.account.receiveaddress)

注意:作为惯例,模型名称应始终是单数

猜你在找的Python相关文章