Каковы преимущества и преимущества get_query_set () и get_context_data ()? Можем ли мы использовать их обоих вместе в виде? - PullRequest
0 голосов
/ 23 июня 2019

Я просматривал документацию Django и столкнулся с двумя способами отображения данных объекта. Мне интересно, можем ли мы использовать как get_query_set(), так и get_context_data внутри одного представления. Например, если у меня есть 3 модели с именем Publisher, Books, Author, где Books и Author связаны друг с другом с полем ManyToMany, а Books и Publisher связаны через ForeignKey.

есть вид

           template_name='some_name.html'

Существует 2 способа отображения данных через получение объектов.

       self.Publisher=get_object_or_404(Publisher,name=self.kwargs('name_of_publisher')

            return Books.objects.filter(publisher=self.publisher)

Я думаю, он вернет все объекты Книги, связанные с name_of_publisher. Я хочу спросить, как будут отображаться данные? Будет ли цикл в шаблонах? Как будет выглядеть URL и если не определено context, то как будут отображаться данные?

2-й метод, с которым я столкнулся, это

def get_context_data(self,**kwargs):
    context=super().get_context_data(**kwargs)
    context['publisher']=self.publisher
    return context

Я нашел работу этого очень запутанным. Я не могу понять, как это работает здесь. Я тоже читал здесь другие посты на случай, если вы попытаетесь дать мне ссылку. За это заранее спасибо. Но что я знаю, так это то, что оба они могут быть использованы внутри одного template и ListView? Если да, пожалуйста, опишите, как будет выглядеть файл template.

1 Ответ

0 голосов
/ 24 июня 2019

get_context_data() подготавливает данные для контекстного словаря. Если вам нужно добавить пользовательские данные, переопределите то, что вы уже сделали.

get_queryset() подготавливает данные, которые должны отображаться в шаблоне. Возвращаемое значение get_queryset() будет использоваться для ключа 'object_list' в контекстном словаре. Вы можете переопределить метод get_queryset () для фильтрации данных на основе вашего желаемого условия. Итак, чтобы получить доступ к данным в файле шаблона, включите в файл шаблона следующее:

{% for item in object_list %}
    <li>{{ item.field1 }} - {{ item.field2 }} - {{ item.field2 }}</li>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...