“RelatedManager”对象不是可迭代的Django

嘿,我已经环顾了一些在这里的simliarpost,但没有发现任何已经解决了我的问题。 我有以下型号,

from django.db import models class Areas(models.Model): name = models.CharField(max_length = 120) order_in_sidebar_network = models.IntegerField(blank=True, null=True) order_in_section_network = models.IntegerField(blank=True, null=True) def __unicode__ (self): return self.area_name class Meta: verbose_name_plural = "Areas" verbose_name = "Area" class Countries(models.Model): name = models.CharField(max_length = 120, help_text = "The name of the country") area = models.ForeignKey(Areas, verbose_name = 'Area') def __unicode__ (self): return self.name class Meta: verbose_name_plural = "Countries" verbose_name = "Country" ordering = ['name'] class Offices(models.Model): country = models.ForeignKey(Countries, verbose_name = 'Country') name = models.CharField(max_length = 255, help_text = "The name of this office, IE London") main_office = models.BooleanField(default= False, help_text = "Is this office a key location?", verbose_name = "Key Location") address_1 = models.CharField(max_length = 255, null = True, blank = True) address_2 = models.CharField(max_length = 255, null = True, blank = True) address_3 = models.CharField(max_length = 255, null = True, blank = True) city = models.CharField(max_length = 255, null = True, blank = True) postcode = models.CharField(max_length = 20) tel = models.CharField(max_length = 30, null= True, blank = True, help_text = "Optional telephone contact number") mobile = models.CharField(max_length = 30, null= True, blank = True, help_text = "Optional mobile contact number") fax = models.CharField(max_length = 30, null= True, blank = True, help_text = "Optional fax contact number") data_1 = models.CharField(max_length = 255, null = True, blank = True, help_text = "Optional additional data", verbose_name = "Additional information") data_2 = models.CharField(max_length = 255, null = True, blank = True, help_text = "Optional additional data", verbose_name = "Additional information") class Meta: verbose_name_plural = "Offices" verbose_name = "Office" ordering = ['name'] def __unicode__(self): return self.name class OfficeMembers(models.Model): name = models.CharField(max_length = 60, help_text = "Please tell us this person name") title = models.CharField(max_length = 100, help_text = "The person's title, IE Managing Director") email = models.EmailField(max_length = 255, null = True, blank = True, help_text = "Optional email address for this person") email2 = models.EmailField(max_length = 255, null = True, blank = True, help_text = "Optional second email address for this person") phone = models.CharField(max_length = 30, null = True, blank = True, help_text = "Optional contact number for this person") mobile = models.CharField(max_length = 30, null = True, blank = True, help_text = "Optional mobile contact number for this person") office = models.ForeignKey(Offices, null = True) class Meta: verbose_name_plural = "Office Memebers" verbose_name = "Office memebr" ordering = ['name'] def __unicode__(self): return self.name 

我有以下观点设置

 def index(request): cache_key = "world_areas" cache_time = 60 world_areas_cache = cache.get(cache_key) #if no cache is set, grab the objects, and set the cache logger.debug(world_areas) if not world_areas_cache: logger.info('No cache found grabbing objects') world_areas = Areas.objects.select_related().all() #cache.set(cache_key, world_areas, cache_time) logger.debug(world_areas) else: logger.info("Getting from cache") world_areas = world_areas_cache return render_to_response('network/index.html', {'world_areas':world_areas}, context_instance=RequestContext(request)) 

试图像这样迭代world_areas对象

 {% for area in world_areas %} 

产生模板语法错误

“RelatedManager”对象不可迭代

任何人有任何想法,为什么这是发生? 真的不能似乎围绕这个! strangley这是在壳为我工作:我是否缺less明显的东西?

非常感谢能够帮助的人!

添加all()从pipe理器中检索元素。

 {% for area in world_areas.all %} 

一般来说,最好使用valuesvalues_list将数据从values_list传递到模板。

 world_areas = Areas.objects.select_related().all().values_list('name', 'order_in_sidebar_network', ...) 

查看Django文档 ,了解如何使用values函数,如果您以前没有使用它。