[英]django rest framework How to delete redundant queries?
我使用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',
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.