我打算建立一个Django项目。我想确保从一开始就以正确的方式做事。这可能是愚蠢或微不足道的,但我想知道如何以正确/最好的方式做事。
假设我有一些模特:
class User(Models.model):
...
class Car(Models.model):
...
在我的代码中,我想从中查询,例如
User.objects.filter(age=25)
User.objects.filter(gender='male')
Car.objects.filter(user__age=25)
我应该直接在需要的地方执行上述代码(User.objects.filter(age=25)
),还是应该有一个模块来将所有查询组织在一个地方,例如
# this is queries.py
def getUsersByAge(age):
return User.objects.filter(age=age)
def getCarByUserAge(age):
return Car.objects.filter(user__age=age)
...
在我的其他地方,我会致电queries.getUserByAge(25)
而不是直接致电User.objects.filter(age=age)
。
我认为没有必要使用单独的函数来完成这些工作,因为Django已经为我们提供了很好的抽象。但是,在一个存储所有相关查询的地方可能是一个很好的代码管理?
谢谢!
答案 0 :(得分:1)
据我所知,直接在适当的地方进行查询是完全可以的。
我不知道你提出的抽象是如何增加任何价值的。例外情况是,如果您在返回之前以某种方式修改查询数据。
答案 1 :(得分:0)
如果您在多个地方使用查询,那可能是个好主意。将来,如果查询更改或需要应用权限,您只需更改方法即可。但是,在实际编写重复查询之前,我不打算创建这些方法。