Django:具有自定义字段的不同用户模型

时间:2015-05-06 20:29:01

标签: django django-models

我正在开发一个新项目,我在面对用户模型时遇到了一些疑问。

我需要两种用户类型:

  • 客户:客户可以购买东西
  • 购物者:商店客户将能够出售这些东西

此模型将分享一些基本数据,如:

  • 地址
  • 电话
  • NIF
  • 和其他一些......

但每个用户类型也会有自定义字段。

我计划使用共享字段创建新模型配置文件,然后使用遗产工具2子模型 ProfileClient ProfileShop 自定义字段。

我想知道这是否是最佳方法,或者有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

我猜一个用户可以同时兼顾Client和Shopper,不是吗?如果是这样,我建议创建一个个人资料模型,然后客户购物者有一个外键链接到个人资料。在这种方法中,您不需要两次保存相同的配置文件信息。

答案 1 :(得分:1)

最佳方法是主观的,但为了支持更多的配置文件类型,而不是每次都添加Profile模型的子类,您可以在Profile模型上有一个JSONField,它包含Profile类型的任意数据。

class SharedProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    address = models.CharField(#..)
    phone = models.CharField(#...) # or phone field, whatever
    # optionally add a preferred profile, or current profile data , and then add properties on the model that get the attributes from the related Profile entry.
    current_profile = models.ForeignKey('foo.models.Profile')

class Profile(models.Model):
    shared_profile = models.ForeignKey(SharedProfile)
    profile_type = models.CharField(choices=PROFILE_CHOICES)
    profile_data = JSONField() # whatever JSONField package you are using