我正在开发一个Django项目,该项目有多个用户需要能够相互交互,例如发送消息或相互收费。但是我不确定我是如何支持这样做的。我有几个像这样的模型:
class Transaction(models.Model):
#sendingUser = OneToOneField()
#recievingUser = OneToOneField()
amount = models.DecimalField(max_digits=11, decimal_places=2)
time_stamp = models.DateTimeField(auto_now_add=True)
transaction_cleared = models.BooleanField(default=False, blank=False, null=False)
我想要做的是将sendingUser绑定到当前登录的用户,并将接收用户绑定到登录用户指定的用户。
做sendingUser = OneToOneField(User)
这样的事情会给我当前登录的用户吗?我相信这就是本教程告诉我要做的事情http://blog.robinpercy.com/2010/04/25/django-onetoonefields/,但我并不完全确定。我在#recievingUser = OneToOneField()
中放入什么来访问当前未登录的用户?我一直试图在Docs或SO上找到一些东西,但我不确定我应该搜索什么。任何帮助将不胜感激。
答案 0 :(得分:1)
首先,您根本不想使用OneToOneFields。顾名思义,它们只允许关系两个侧的一个用户:因此每个用户只能将一个事务作为发送者而一个作为接收者。我想你希望任何用户能够拥有他们想要的尽可能多的事务,所以你应该使用ForeignKey字段。
但不,这些关系都与登录的用户无关。模型是对数据结构的描述:声明意味着"事务与用户有关系,但是没有任何指定哪个用户。在您创建交易时,由您来指定您想要的用户 - 可以是您登录的用户,您可以通过request.user
获得的用户,或完全随意的用户其他用户,您可以通过他们的ID或用户名在数据库中查找。