get_by_id()与objects.get()与objects.filter()之间的差异

问题描述 投票:0回答:1

我只是想看看它们之间有什么区别:

obj = ClassModel.get_by_id(object_id)

obj = ClassModel.objects.get(pk=object_id)

obj = ClassModel.objects.filter(pk=object_id)

第一个,我通过扩展models.Model定义了自己,但是我不确定创建一个额外的方法来执行第二个选项可以做的事情是否是一个好习惯。

使用第一个选项而不是第二个选项会产生后果吗?使用它是安全的还是只是在我的代码中增加代码负担?

django
1个回答
1
投票

第二种方法允许通过任何字段获取对象(但是id是默认值),例如:

user = User.objects.get(username='some_user_name')

第三种方法返回匹配对象的列表,可用于按字段或字段组合进行过滤:

users = User.objects.filter(username__startswith='A', firstname__in=['Bob'])
© www.soinside.com 2019 - 2024. All rights reserved.