【问题标题】:Trouble understaing User Object in Django无法理解 Django 中的用户对象
【发布时间】:2016-05-17 02:18:40
【问题描述】:

我正在学习 django 并创建一个网络应用程序,客户可以在其中注册进行购买,供应商也可以添加他/她的产品进行销售。在阅读了 django 上的文档后,我仍然不清楚 django 提供的内置对象中的用户。我的问题是:

  1. 我是否应该使用内置对象中的用户来满足我的要求。但是在阅读了文档之后,似乎 User 对象最适合管理员权限/超级用户,或者我错了。

  2. 因为我将有 2 个用户,这意味着在数据库中有 2 个不同的模型。会有2种不同的观点。客户或用户只能看到待售产品,供应商只能看到他/她希望出售的仪表板和产品。

从 Java 的角度来看,我可以只创建一个 Client 类和一个 Vendor 类,但我想在 django 中执行此操作,从我从他们建议使用 User 对象的文档中阅读的内容来看。请问我该怎么做,或者有人可以举例说明如何去做。非常感谢..

【问题讨论】:

  • this answer
  • 您不一定需要两种不同的模型。您应该明智地设计数据库,并正确管理权限。您可以使用foreignkey 链接表(模型)并管理权限。这确保了数据库中数据的完整性。我建议你看看数据库设计原则(YouTube 上有很多或不到 1 小时的视频)。完成此操作后,您将能够以更优雅的方式执行此操作。
  • @Xenatisch 是的,我有我的数据库设计设置问题是在 django 中建模并且来自 java 我可以编写 2 个类,但由于 django 有一个内置类的用户,所以有点棘手
  • 看看这个Model creation, ForeignKey relations, testing and the Django Admin,你可能会发现它有帮助。
  • 两个独立的模型一路走来有很多好处。提取数据时,它更不容易出错:您使用 Vendors.vendors_things_set.filter(...) 和 Client.clients_things_set.filter(...)。此代码不太可能在供应商获取客户数据时产生错误,反之亦然,如果您从模型开始并忘记按客户/供应商过滤,则很容易发生这种情况

标签: python django


【解决方案1】:

你是对的,java 透视图是数据库透视图,django 也是如此:

from django.contrib.auth.models import User

class Client(models.Model):

   user = models.OneToOneField(User)
   # ... more Client fields here

class Vendor(models.Model):

   user = models.OneToOneField(User)
   # ... more Vendor fields here

请注意,这些模型允许用户成为客户和供应商 - 或者根本没有。如果用户只能是客户供应商,或者必须是这些类别之一,您将需要额外的验证。 User 模型将用于所有人的通用功能,例如身份验证或其他共享功能(例如使用电子邮件发送通知)

【讨论】:

  • 感谢您的回复。我在他们提到的文档中看到了 abstractbaseUser。这会是一个好方法吗?它是否可以扩展。
  • 如果您是 django 新手,我建议您坚持使用默认的 User 模型。它涉及框架的许多部分。
  • 将再次阅读文档以获得理解。从之前的阅读中看来,最好使用用户对象和自定义验证来满足您的需求。真的很想让这个工作并理解它。还不想放弃
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2020-09-01
  • 2012-02-16
  • 2014-05-17
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多