我正在搞乱我的第一个Django网站,到目前为止它还不错。我现在面临着从数据库中获取一些信息的挑战。我的模型看起来像这样:
class Countries(models.Model):
country = models.CharField(max_length=100)
def __unicode__(self):
return self.country
class OrganisationTypes(models.Model):
organisation_type = models.CharField(max_length=100)
def __unicode__(self):
return self.organisation_type
class Organisations(models.Model):
organisation_name = models.CharField(max_length=200)
organisation_type = models.ForeignKey(OrganisationTypes)
country_of_origin = models.ForeignKey(Countries)
def __unicode__(self):
return self.organisation_name
class Locations(models.Model):
organisation = models.ForeignKey(Organisations)
country_of_location = models.ForeignKey(Countries)
tel_nr = models.CharField(max_length=15)
address = models.CharField(max_length=100)
def __unicode__(self):
return '%s - %s - %s - %s' % (self.organisation, self.country_of_location, self.tel_nr, self.address)
我现在想要显示我想要显示organisation_name
和country_of_origin的位置列表。为此,我编写了以下函数:
def organisation_locations(requests, organisation_id):
org = Organisations.objects.get(id=organisation_id)
location_list = Locations.objects.filter(organisation=organisation_id).order_by('country_of_location')
output = '<br />'.join([str(loc.organisation)+' from '+str(org.country_of_origin) for loc in location_list])
return HttpResponse(output)
这是正常的,但它似乎不是正确的方法。由于Location表在Organizations表中有一个外键,而且在Countries表中有一个外键,我有一种模糊的感觉,Django可以在一个“查询”或查找中执行此操作。
我觉得这种感觉是正确的,还是我确实是这样做的正确方法?欢迎所有提示!
答案 0 :(得分:1)
你不能这样做:
location_list = Locations.objects\
.filter(organisation=organisation_id)\
.order_by('country_of_location')
output = '<br />'.join([str(loc.organisation)+' from '+str(loc.organisation.country_of_origin) for loc in location_list])
组织查询不是必需的。您可以访问以下组织:localization.organisation
。
代码中没有 Djangonic 的是响应。您应该有一个模板并执行return render_to_response
:)