构建自定义可扩展模型

时间:2013-04-15 03:36:40

标签: django django-models

假设我有一个名为客户端的模型,其中包含名字,姓氏,电子邮件等基本信息。如果我希望用户能够添加另一个自定义字段(仅适合他),请说净值(文本字段)。此用户现在可以向其所有客户添加净值信息。另一位用户可能希望向所有客户添加通话记录

如何设计可以处理来自不同用户的此类自定义添加的模型?而且,我正在尝试做什么的具体名称?

更新

有多个帐户,每个帐户都有一组客户端。我正在考虑使用ClientCharIndex模型来跟踪所有扩展字段和ClientCharAttribues模型来存储所有值。

class Client(Model):
   account = models.ForeignKey(Account)
   first_name = Model.CharField()
   last_name = Model.CharField()
   ...

class ClientCharIndex(Model):
   account = models.ForeignKey(Account)
   name = Model.CharField()

class ClientCharAttribues(Model):
   key = models.ForeignKey(ClientCharIndex)
   client = models.ForeignKey(Client)
   value = Model.CharField()

1 个答案:

答案 0 :(得分:1)

您可以做的是定义一个只包含键值字段的模型(可能是类型),并且与client模型具有M2M或外键关系。

这样的事情:

class Client(Model):
  ...

class UserAttribues(Model):
   key = Model.CharField()
   value = Model.CharField()
   client = Model.ManyToManyField(Client)

使用此功能,您可以将任何键值信息添加到客户端对象及其中的任意数量。