あなたのjjangoクエリを改善する👋


Blogというモデルがあります.
class Blog(models.Model):
    title = models.CharField(max_length=255)
    content = models.CharField(max_length=500)
そして、あなたのデータベースに10のブログを挿入したいので、私たちの意見を構築しましょう.
class BlogApi(APIView):

    def get(self, request):

        for _ in range(10):
            blog = Blog.objects.create(
                title = 'Blog Title',
                content = 'Blog Content'
                )
        return Response(status=status.HTTP_201_CREATED)
これは、あなたが見ることができるようにCPU時間268.63👇

→上記のデバッグはdjango-debug-toolbar
では、違いを見るために😉
class BlogApi(APIView):

    def get(self, request):

        blog_list = [] # Empty list to save blog object on
        for _ in range(10):
            blog = Blog(
                title = 'Blog Title',
                content = 'Blog Content'
                )
            blog_list.append(blog)

        Blog.objects.bulk_create(blog_list) # Use bulk_create to insert the list of blog objects

        return Response(status=status.HTTP_201_CREATED)
これはいくらかかりますか.

CPU時間156.79 msで1.35 msでわずか2クエリ!
すごいよ😅
docsからbulk_createbulk_create()についてもっと読んでください
最後に、読書のおかげで、私はあなたがdjango🌼