Django,管理用户数据

时间:2016-06-29 23:49:30

标签: django file accounts

我正在使用Django的用户帐户管理系统来创建帐户和登录/注销用户。我遇到麻烦的地方是弄清楚我的网站为每个用户创建的用户文档的保存位置和方式。

我的网站的目的是为学生正确格式化学校文件。他们需要在其帐户上访问这些创建的文档。

目前,我倾向于使用Amazon S3 Web服务来存储文档。我怎样才能附上'文档给用户并允许他们访问它们?我想过使用用户的电子邮件来查找他们的文件,但是如果他们改变了文件,就会意识到他们无法访问它们。如果这是有道理的......

请不要将此问题视为基于意见的问题,而不是"操作方法"根据。任何答案都表示赞赏。

谢谢,

1 个答案:

答案 0 :(得分:0)

我实现这一点的方法是使用一个单独的模型来表示用户应该有权访问的文档。该模型将包含:

  • 一个ForeignKey到settings.AUTH_USER_MODEL模型
  • 在S3上找到的文件路径(整个网址,或者只是前缀/密钥详细信息可以根据设置构建到完整的URL(例如,如果您最终更改存储提供程序并迁移所有数据)从S3到Rackspace云,更改设置比在数据库中搜索潜在的数十万条记录和更新URL更容易。如果使用django-storages,它们会提供FileField模型字段为您自动半自动化,并且还处理将文件本身上载到指定的S3位置。还可以根据需要支持其他文件存储后端。
  • 某些说明的文档名称/评论/标题字段
  • 创建/上次修改的时间戳...只是因为我的滚动方式。

如果此模型被调用"文档",那么您就可以通过user.document_set.all()访问属于用户的所有文档了(我设置{{1}在related_name ForeignKey上user使{* 1}}更好。如果用户更改了他们的电子邮件地址,那很好,因为我们正在使用数据库的主键作为用户模型。