Я не могу понять разницу между prefetch_related ('arg_set') и prefetch_related ('arg').
Иногда prefetch_related не работает при использовании аргумента 'arg'even' arg_set '.
Я искал через docs.djangoproject.com, но, по крайней мере, я не могу найти соответствующий документ на обеих страницах ниже.
https://docs.djangoproject.com/en/2.1/ref/models/querysets/ https://docs.djangoproject.com/ja/2.1/ref/contrib/contenttypes/
Могут ли некоторые из вас уточнить разницу и когда _set необходимо?
И я хочу прочитать официальный документ, связанный с этой проблемой, поэтому, показывая мне, ссылка ссылка приветствуется.
Заранее спасибо.
окружающая среда:
windows10, python 3.7.2, django 2.1.8, sqlite3, PyCham 2019.1.
views.py
from django.shortcuts import render
from .models import Article
def index(request):
a = Article.objects.all().select_related('user').prefetch_related('comment_set').order_by('id') # [1]
a = Article.objects.all().select_related('user').prefetch_related('comment').order_by('id') # [2]
return render(request,
'sns/index.html',
{'articles': a})
models.py
from django.db import models
from article_comment_model.settings import AUTH_USER_MODEL
class Article(models.Model):
user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='article_user')
title = models.CharField(max_length=100)
text = models.TextField()
class Comment(models.Model):
user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='comment_user')
article = models.ForeignKey(Article, on_delete=models.CASCADE)
text = models.TextField()
Я хочу хорошо понять разнообразие аргументов prefetch_related.