所以我在 Django 中有一个 UserProfile,其中包含整个项目所需的某些字段 - 生日、居住地等 - 并且它还包含很多实际上并不重要的信息逻辑是 - 家乡,关于我,等等。我试图让我的项目比我自己的项目更灵活并且适用于更多情况,并且我想让项目实例的管理员可以添加任何字段他们喜欢使用 UserProfile,而不必直接修改模型。也就是说,我希望新实例的管理员能够根据用户的特定需求动态创建用户的新属性。由于 ORM 的性质,这可能吗?
最佳答案
一个简单的解决方案是创建一个名为 UserAttribute 的新模型,该模型具有键和值,并将其链接到 UserProfile。然后你可以在 django-admin 中将它用作内联。这将允许您通过管理员向 UserProfile 添加任意数量的新属性:
models.py
class UserAttribute(models.Model):
key = models.CharField(max_length=100, help_text="i.e. Age, Name etc")
value = models.TextField(max_length=1000)
profile = models.ForeignKey(UserProfile)
admin.py
class UserAttributeInline(admin.StackedInline):
model = UserAttribute
class UserProfile(admin.ModelAdmin):
inlines = [UserAttibuteInline,]
这将允许管理员添加一长串属性。限制是您无法对输入进行任何验证(除了确保它是有效文本之外),您还仅限于可以用简单英语描述的属性(即您将无法对它们执行太多登录操作) )并且您将无法真正比较用户配置文件之间的属性(无论如何都没有大量数据库命中)
关于Django - 可定制的用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6295349/