所以我现在一直在使用django,这很棒。我最近遇到了一个问题,我确信有一种糟糕的方式让它工作,但我发现Django的原因是他们通常建立各种各样的机制来做给你的东西。所以我找不到的是:
以下是我的模特:
class LandmarkGroup(models.Model):
Name = models.CharField(max_length=150)
Description = models.CharField(max_length=300, blank=True)
IsActive = models.BooleanField(default=True)
landmarks = models.ManyToManyField('Landmark', blank=True, null=True)
def __unicode__(self):
return self.Name
class Landmark(models.Model):
Name = models.CharField(max_length=150)
Description = models.CharField(max_length=300, blank=True)
Polygon = models.PolygonField()
IsActive = models.BooleanField(default=True)
objects = models.GeoManager()
def __unicode__(self):
return self.Name
我还有另一个模型'Team',它有一个带有LandmarkGroup的ManyToMany,但我不打算在这里发布。我有一个视图,我查询所有具有地标组的地标,该地标组的团队ID与我传入的团队ID相同:
def mobile_startup(request):
...
landmarkGroups = LandmarkGroup.objects.filter(team=device.team, IsActive=True)
landmarks = Landmark.objects.filter(landmarkgroup__team=device.team, IsActive=True)
...
return render_to_response('webservice/mobile_startup.html', {'landmarks': landmarks, 'landmarkGroups': landmarkGroups})
一切正常,我遇到的唯一问题是,我将这一切都作为JSON返回到移动应用程序,我想为地标提供landmarkGroup id,所以在我的模板中我一直在尝试:
"landmarkGroup" : {{ landmark.landmarkgroup.id }} }
但那不起作用。有谁知道我可以获得我的集合中每个地标的landmarkGroup ID?我在查询时是否需要提取它?我知道我可以在查询中引用每个landmarkGroup,因为我可以做'landmarkgroup__team = device.team',但我需要能够在模板中引用这个对象
答案 0 :(得分:0)
LandmarkGroup.landmarks
是ManyToManyField
,因此一个Landmark
可以属于多个组。
您应该能够在模板中输出它们,如下所示:
{% for group in landmark.landmarkgroup_set.all %}{{ group.pk }}{% endfor %}
属于地标的第一个组应该可以通过{% landmark.landmarkgroup_set.all.0 %}