python - django Rest框架如何删除多余的查询?

标签 python django django-rest-framework

我使用 Django debug_toolbar 查看 SQL 查询,我想删除第二个 SQL 查询。

1.(SELECT ... FROM auth_user LEFT OUTER JOIN accounts_userextension ON (auth_user.id = accounts_userextension.user_id) 50.86474349085549% 28.30 Sel 
Expl)   
2.(SELECT ... FROM auth_user LIMIT 1000  49.13525650914451%   27.34 Sel  Expl)

这是models.py:

class UserExtension(models.Model):      
    user = models.OneToOneField(User,on_delete=models.CASCADE,related_name='user_detail')
    birthday = models.DateField(null=True,blank=True)

这是serializers.py:

from django.contrib.auth.models import User   
from .models import UserExtension    
class UserExtensionSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserExtension
        fields = '__all__'

class accountDetailSerializer(serializers.ModelSerializer):
    user_detail = UserExtensionSerializer()
    class Meta:
        model = User
        fields = [
            "username",
            "email",
            "first_name",
            'user_detail',
        ]

这是views.py:

class AccountView(generics.ListCreateAPIView):    
    queryset = User.objects.all().select_related('user_detail')
    serializer_class = accountDetailSerializer
    permission_classes = ()

最佳答案

我认为额外的查询是因为user_detail = UserExtensionSerializer()。尝试下面的代码。我没有测试过,但应该可以。

class accountDetailSerializer(serializers.ModelSerializer):
    user_details = UserExtensionSerializer(source='user_detail')
    class Meta:
        model = User
        fields = [
            "username",
            "email",
            "first_name",
            'user_details',
        ]

关于python - django Rest框架如何删除多余的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57178737/

相关文章:

python - 将两个字典组合成一个列表

php - mySql 使用键连接表

python - 了解 Django 中的 View 评估

具有Swagger或其他文档的带有定义参数(request.POST)的Django Rest Framework自定义POST URL端点

python - 如何从从 Google 阅读器导出的 OPML 文件中提取提要网址?

python - 仅根据工作日(上午 8 点至晚上 10 点)和工作日在 Python 中查询数据

django - 服务静态文件 Django 开发

python - 扩展 auth.User 模型、代理字段和 Django 管理

python - 使用 Python Social-auth 如何从自定义管道检索存储在 session 中的字段

django - 独立 REST API 和独立 React SPA 对比 Django 和 React 组合