如果我通过他们的user_id
(string
)查询我的用户信息而不是创建Profile
模型并使用SQL关系将它们链接到其他模型,这是一个重大缺陷吗?
示例1 :( user_id
存储在django会话中。)
class Information(models.Model):
user_id = models.CharField(...)
...
# also applies for .filter() operations.
information = Information.objects.get(user_id=request.getUser['user_id'])
注意:我正在Auth0上存储用户的个人资料信息。
例2 :( user_id
存储在Profile
。)
class Profile(models.Model):
user_id = models.CharField(...)
class Information(models.Model):
profile = models.ForeginKey(Profile, ...)
...
information = Information.objects.get(profile=request.getProfile)
注意:使用此方法,Profile只有一个字段
user_id
。
在Django上,使用字符串而不是查询对象会影响检索项目的性能吗?
如Dirk所述,这里的表现不是问题。一旦列被索引,与其他因素相比,数据类型之间的性能差异应该可以忽略不计。这是一个更加透视的related SO question。
您应该注意的是防止重复数据的完整性,然后您必须自己处理,而不是依赖数据库中经过充分测试的完整性检查。
另一个方面是,如果你的数据之间存在关系,你绝对应该确保使用Django的relationships在模型中准确表示它们。否则,使用Django的ORM真的没什么意义。祝好运!