这很简单,但我在使用Django解决问题时遇到了问题:
我定义了以下模型:
class Story(models.Model):
title = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.title
class Category(models.Model):
categoryText = models.CharField(max_length=50)
parentCat = models.ForeignKey('self',null=True,blank=True)
def __unicode__(self):
return self.categoryText
class StoryCat(models.Model):
story = models.ForeignKey(Story)
category = models.ForeignKey(Category)
def __unicode__(self):
return self.story
我正在尝试对StoryCat进行查询以检索具有相同类别的所有故事。我做了以下查询:
c = Category.objects.get(categoryText='short')
s = StoryCat.objects.filter(category=c)
此时我想访问返回类中的值,但我无法弄清楚如何操作。我尝试过的所有东西都会出错。如何获取返回的故事数量和返回故事的ID?
答案 0 :(得分:0)
你的模特对我来说似乎不对。首先,你创建的是故事和类别之间的ManyToMany关系。这似乎可能对我来说太过分了,但我可能是错的。
如果您确实希望在故事和类别之间创建多种语言,则应对其进行定义:
class Story(models.Model):
title = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
categories = models.ManyToMany(Category, through=StoryCat)
def __unicode__(self):
return self.title
从那里你的查询就像:
c = Category.objects.get(id=1)
stories = Story.objects.filter(categories=c)
答案 1 :(得分:0)
您正在做的事情应该有效,但看起来story
的{{1}}字段有错误模型的外键。您可能需要StoryCat
,而不是Story
。
顺便说一句,一个故事可能只有一个外键Poll
(如果一个故事只有一个类别),或many-to-many与Category
的关系(如果一个故事可以属于多个类别)。那么你根本不需要Category
模型。
答案 2 :(得分:0)
ids = s.values_list('id', flat=True).order_by('id')
# [1, 2, 3, ...]
ids_length = len(ids)