【问题标题】:Building Custom Extentable Models构建自定义可扩展模型
【发布时间】:2013-04-15 03:36:39
【问题描述】:

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

如何设计一个模型来处理来自不同用户的此类自定义添加?另外,我想要做的事情有一个具体的名称吗?

更新:

有多个帐户,每个帐户都有一组客户。我正在考虑使用 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()

【问题讨论】:

    标签: django django-models


    【解决方案1】:

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

    类似这样的:

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

    有了它,您可以将任何键值信息添加到客户端对象和任意数量的对象中。

    【讨论】:

    • 感谢您的评论,抱歉回复晚了!上面更新的模型有意义吗?
    • @drakej44,不知道你为什么想要中级ClientCharIndex 模型。不过好像没问题。
    • 它是跟踪添加到每个帐户的字段,以便如果客户端上还没有该字段的数据,则显示为空。这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2022-10-09
    • 2013-01-02
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2014-09-06
    相关资源
    最近更新 更多