【发布时间】:2012-02-21 12:55:45
【问题描述】:
早安各位! 场景如下。对于 Django 上的某些模型,我想允许最终用户定义自己的字段。如果我能保留像 ORM 这样的所有 Django 很棒的特性,那就太好了,所以我仍然可以调用 field__gte 来搜索模型,仍然可以根据字段类型进行字段验证等。我考虑过两种方法这个,我非常愿意接受新的建议。任何反馈将不胜感激。
第一种方法是实体属性值(http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model),django 已经有一个应用程序。见http://code.google.com/p/django-custom-field/ 我认为这将是一个不错的解决方案,但我失去了执行“mymodel.objects.filter(custom_field_x=something)”的能力。也许有办法重新获得 ORM,有什么想法吗?但是我听说过很多关于这种方法的坏故事,以至于我有点害怕使用它。
第二种方法是为每个用户创建一个数据库表(可能不超过 1000 个)。我读过 django 在 inspectdb 的行中有一些东西,它实际上检查了哪些字段在那里并为您生成模型。这可能很有用,但我想也许我应该存储这个特定用户创建的字段,并以某种方式告诉 django,嘿,我们在这个模型中也有这个字段。这可能吗?我知道为每个用户设置不同的表通常不好,但是考虑到这种情况,你们如何评价这种方法,是否可以为每个用户设置一个表?
需要自定义字段的模型例如 Person。他们可能想要一个自定义字段来存储地址、血型或任何其他内容。
提前非常感谢!祝你星期天愉快!
非常相似:How to create user defined fields in Django -- 但只谈论 EAV,我想避免。我愿意接受新的想法!
【问题讨论】:
-
找到了最好的参考:stackoverflow.com/questions/7933596/django-dynamic-model-fields 抱歉,我的问题与那个重复。模组,请随意关闭它。
标签: django django-models custom-fields