我正在阅读这里的教程,对于Django 1.6:https://docs.djangoproject.com/en/1.6/intro/tutorial01/
它使用我不认识的属性choice_set
。我认为这是decapitalized子对象(使用ForeignKey
形成,如本教程前面所述),但是当我自己尝试这个时会产生错误。我的假设是否正确?
我知道我并不是最简洁的,所以请问你是否需要进一步澄清。
这是我的models.py
:
from django.contrib.auth.models import User
class Information(models.Model):
title = models.CharField(max_length = 200)
body = models.TextField()
date = models.DateTimeField()
def __unicode__(self):
return self.title
class InformationChild(models.Model):
information = models.ForeignKey(Information)
child_text = models.CharField(max_length = 200)
def __unicode__(self):
return self.child_text
这就是我的尝试:
i1 = Information.objects.filter(pk=1)
i1.informationchild_set.all()
这应该根据教程返回一个空列表,因为我没有将任何子项设置为父项。如果我完全理解这一点,那就是。
答案 0 :(得分:1)
filter
方法返回a QuerySet
而不是一个模型实例。 QuerySet
是一个Django对象,表示对数据库的查询,可以对其进行过滤,切片和迭代以获得结果。您可以使用QuerySet
获得i1[0]
的第一个结果,但这不是您的最佳选择。
在您的情况下,由于您确定只能获得一个且只有一个结果,因此您需要使用get
方法:
i1 = Information.objects.get(pk=1)
# then, this is possible:
i1.informationchild_set.all()