Использование _set.filter (id = 4) выборка поля Django - PullRequest
0 голосов
/ 10 октября 2018

Вот моя проблема

Trying to fetch the title field inside the _set all queryset in Django as you can see on the terminal window below

Я пытаюсь получить данные из модели страницы, которая связана с моделью объекта с помощью внешнего ключа.Есть ли способ, как быстро получить данные?

Вот мои views.py Views.py

urls.py

enter image description here

Я пытаюсь получить заголовок поля из объекта page_set.filter.

Вот мой класс models.py

from django.db import models
from ckeditor.fields import RichTextField
# Create your models here.


class Subject(models.Model):
 title = models.CharField(max_length = 200)
 slug = models.SlugField(blank = False)
 visible = models.BooleanField(default = True)
 position = models.IntegerField()
 date_published = models.DateTimeField(auto_now_add = True)
 date_updated = models.DateTimeField(auto_now_add=False)

 def __str__(self):
    return self.title


class Page(models.Model):
 subject = models.ForeignKey(Subject, on_delete= models.CASCADE)
 title = models.CharField(max_length = 200)
 slug = models.SlugField(blank = False)
 description = models.TextField()
 thumbs = models.ImageField(blank = True)
 visible = models.BooleanField(default = True)
 position = models.IntegerField()
 date_published = models.DateTimeField(auto_now_add = True,auto_now=False)
 date_updated = models.DateTimeField(auto_now_add=False, auto_now=True)


 def __str__(self):
    return self.title

Лента новостей (models.Model):

 title = models.CharField(max_length = 200)
 slug = models.SlugField(blank = False)
 description = models.TextField()
 thumbs = models.ImageField(blank = True)
 visible = models.BooleanField(default = True)
 position = models.IntegerField()
 date_published = models.DateTimeField(auto_now_add = True)
 date_updated = models.DateTimeField(auto_now_add=False)


 def __str__(self):
    return self.title

1 Ответ

0 голосов
/ 10 октября 2018

Page.objects<b>.filter(id=4)</b> дает QuerySet из Page с, а не один Page.Даже если QuerySet содержит один элемент, это не Page (как список с одним номером, это не число).Или, как указано в filter(..) документации :

Возвращает новый QuerySet содержащий объекты , которые соответствуютданные параметры поиска .

Вы можете использовать Page.objects<b>.get(id=4)</b> для получения Page объекта (если он существует, и существует только один такой объект, в противном случае возникнет ошибка).Или как указано в документации get(..) :

Возвращает объект , соответствующий заданным параметрам поиска , который должен находиться вформат, описанный в полевых поисках.

get() повышает MultipleObjectsReturned, если найдено более одного объекта.Исключение MultipleObjectsReturned является атрибутом класса модели.

get() вызывает исключение DoesNotExist, если объект не был найден для данных параметров.Это исключение является атрибутом класса модели.

...