使用_set.filter(id = 4)Django字段提取

时间:2018-10-10 09:17:25

标签: python django python-3.x django-queryset

这是我的问题

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

我正在尝试从通过外键连接到Subject模型的页面模型中获取数据。有什么办法可以快速获取数据?

这是我的views.py Views.py

urls.py

enter image description here

我正在尝试从page_set.filter对象中获取字段标题。

这是我的模型。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

NewsFeed类(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 :(得分:1)

Page.objects.filter(id=4)导致 QuerySet Page,而不是单个 Page。即使QuerySet包含一个元素,它也不是Page(就像具有一个数字的列表一样,也不是数字)。或如filter(..) documentation中指定:

  

返回新的 QuerySet ,其中包含与给定查找参数匹配的对象

您可以使用Page.objects.get(id=4)获取一个Page对象(假设存在,并且只有一个这样的对象存在,否则将引发错误)。或如get(..) documentation中指定:

  

返回与给定查找参数匹配的对象,该对象应该   采用“字段查找”中所述的格式。

     如果有多个对象,则

get()会引发MultipleObjectsReturned   找到了。 MultipleObjectsReturned例外是   模型类。

     如果未找到对象,则

get()会引发DoesNotExist异常   给定的参数。此异常是模型的属性   课。