在django ORM中强制执行特定列的where子句

时间:2014-02-17 09:01:15

标签: python django django-orm

我们可以在django ORM周围编写一个包装器,以便每个查询都应该有一个where子句吗? 现在,您不能使用all()方法。 例如。 假设我们有auth_user表和user_properties表,其中包含有关用户的附加数据(以及来自auth_user的外键)。 在这里,如果开发人员想要从user_properties表中获取几行,他必须在user查询中提供user_idfilter列,否则它应该提供异常。 如果您需要更多信息,请写下评论。

1 个答案:

答案 0 :(得分:0)

如果您想扩展用户模式,请在user_properties模型中使用OneToOne字段添加用户模型,如下所示:

class UserProperty(models.Model):
    user = models.OneToOneField(User, related_name='properties')
    prop1 = models.CharField(...)
    prop2 = models.CharField(...)

prop1 = request.user.properties.prop1

请记住,您需要在创建新用户时创建UserProperty