我有一个包含一些字段的用户模型。其中一些需要反馈,是否正确填写(如果没有,特定的消息将显示在用户配置文件上)。
问题是,如何在数据库中表示“无效”字段。我的想法是用OneToOneField为用户创建另一个模型(称为OneToOneField)。ExtUser应该具有与用户相同的字段名,但它们的类型都是布尔型,从而确定字段是否正确填充。例如,如果用户有一个名为email的字段:
email = models.CharField(max_length=100)
ExtUser将具有以下字段:
email = models.BooleanField(default=False)
这个方法有个问题。如何在ExtUser中创建字段?当然,我可以手动创建它们,但这违反了干燥原则,我不打算这样做。问题是,我是否可以添加字段来进行动态建模,并将它们放到数据库中(因此我假设迁移之前需要调用这些字段)?
我有django 1.8,我不想使用任何外部模块/库。
如果有人对如何在数据库中表示数据有另一个想法,请添加注释,而不是答复--因为这个问题是关于动态创建字段的。
发布于 2015-07-16 12:43:48
--您需要手动执行此操作--。
Python不允许这种行为;您可以查看this SO response on dynamically created classes,但是Django将无法解释输出。特别是,Django依赖于模型来为应用程序创建SQL表,如果您的模型没有静态定义,就根本不可能发生这种情况。
在这种情况下,我不认为您需要担心干燥;如果您需要一个单独的模型,其中的字段恰好与另一个模型相关,但与另一个模型不同,我认为这可能是可以的。
最后,我不确定您的目标是什么,但是您可能可以定义一些函数,这些函数可以确定用户的字段如何“正确”。这就是我建议解决这个问题的方法(如果适用的话)。
https://stackoverflow.com/questions/31463989
复制