我有一个像这样的model.py:
class EventTypeCategory(models.Model):
name = models.CharField(max_length=50, verbose_name="Name")
user = models.ForeignKey(User, verbose_name="User")
Message_slug = models.SlugField(blank=True, verbose_name="Message")
sub_categories = models.ForeignKey('self', verbose_name="Self-Categories", null =True, blank = True)
而sub_categories字段是其自身的外键
我有一个像这样的view.py:
@login_required
def eventcateg_detail(request):
ca = EventTypeCategory.objects.values()
return render_to_response('events/categ.html',{
'obj': ca,
})
而ca返回字典如下:
[{'Message_slug': u'ngcg', 'sub_categories_id': 124L, 'user_id': 1L, 'id': 146L, 'name': u'ngcg'}, {'Message_slug': u'lkn', 'sub_categories_id': 146L, 'user_id': 1L, 'id': 149L, 'name': u'lkn '}]
我想从categ.html的每个字典内容中打印“子类别,消息”和“名称”的值。而sub_categories返回“id”(指向自身的外键)。我是Django的新手,也有类似的问题,但它对我不起作用:(
数据应该在categ.html上打印:
Message: Name: Sub-categories:
ngcg ngcg (values which refer to foriegn key)
答案 0 :(得分:2)
通常,我们使用QuerySet.all()来返回模型实例对象,而不是QuerySet.values()。
如果您有一个名为foo的字段,它是ForeignKey,则为默认值 values()调用将返回一个名为foo_id的字典键,因为这个 是存储实际值的隐藏模型属性的名称 (foo属性指的是相关模型)。
检查文档: django.db.models.query.QuerySet.values
@login_required
def eventcateg_detail(request):
ca = EventTypeCategory.objects.all()
return render_to_response('events/categ.html',{
'objs': ca,
})
现在,obj是一个EventTypeCategory实例。
{% for obj in objs %}
{{obj.Message_slug}}, {{obj.name}}, {{obj.sub_categories.name}}
ngcg, ngcg, (name of instance which refer to foriegn key)
{% endfor %}