【问题标题】:Accessing specific users for use with database relations访问特定用户以使用数据库关系
【发布时间】:2014-07-07 18:17:54
【问题描述】:

我正在开发一个 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 = OneToOneField(User) 这样的操作是否会给我当前登录的用户?我相信这就是本教程告诉我要做的事情,http://blog.robinpercy.com/2010/04/25/django-onetoonefields/,但我并不完全确定。我应该在#recievingUser = OneToOneField() 中输入什么来访问当前未登录的用户?我一直试图在 Docs 或 SO 上找到一些东西,但我不确定我应该搜索什么。任何帮助将不胜感激。

【问题讨论】:

    标签: database django one-to-many one-to-one


    【解决方案1】:

    首先,您根本不想使用 OneToOneFields。顾名思义,它们在关系的双方中只允许一个用户:因此每个用户只能有一个交易作为发送者和一个作为接收者。我想您希望任何用户都能够进行任意数量的交易,因此您应该使用 ForeignKey 字段。

    但是不,这些关系都与登录的用户没有任何关系。模型是对您的数据结构的描述:声明的意思是“交易与用户有关系”,但没有任何内容指定 哪个用户。创建事务时,由您决定要指定哪个用户 - 可以是已登录的用户,您可以通过 request.user 获得,也可以是完全任意的其他用户,您可以查找通过他们的 ID 或用户名在数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多