【发布时间】:2022-01-19 06:21:48
【问题描述】:
我有一种情况,我不确定是否会使用 select_related。我有一个这样的模型:
class Example(models.Model):
title = models.CharField(max_length=255, blank=True)
message = models.TextField(blank=True)
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
null=True,
related_name="user_example",
)
/................./
现在在我看来,我使用了这样的过滤逻辑:
def get_queryset(self):
search = self.request.query_params.get("search", None)
if search_query is not None:
queryset = Reactions.objects.filter(
Q(user__name__icontains=search)
| Q(user__email__icontains=search)
).distinct()
这里的示例模型与 User 具有 fk 关系,因此它是正向关系而不是反向关系。我是否应该在上面的示例中添加.select_related('user').filter(...) 以减少查询次数,或者这里不需要...我想不通。
序列化器:
class ExampleSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = Reactions
fields = ["id", "user", "title", "message"]
【问题讨论】:
-
你能分享你正在使用的序列化器吗?如果您在序列化程序中访问相关用户,那么是的,您应该使用 select_related,如果没有,则没有必要
-
你好@IainShelvington 我已经用序列化程序更新了它。请检查。
标签: django api django-rest-framework foreign-keys django-select-related