如何显示模型中的模板数据?

专家

嗨,我有两种型号:

class Country(models.Model):
    name = models.CharField(max_length=50)

class City(models.Model):
    name = models.CharField(max_length=50)
    country = models.ManyToManyField(Country)

现在我想在每个城市的模板名称和国家中显示,但是当我这样做时:

{% for city in cities %}
    {{ city.name }}
    {{ city.country | linebreaks }}
{% endfor %}

我得到这个:

London 
city.Country.None 

Berlin 
city.Country.None 

Paris 
city.Country.None

我必须改变什么?

意见:

def city_list(request):
    cities = City.objects.all().order_by('name')
    return render(request, 'city/city_list.html', {'cities': cities})

编辑:我在模板city.country上进行了更改,city.country.name但我只得到了这一点:

London 
None 

Berlin 
None 

Paris 
None

我不知道国家名称的更改方式为“无”。

第二个问题:我想显示属于国家的每个城市。

def England(request):
    cities = City.objects.filter(country__name__exact="England").order_by('-name')
    return render(request, 'city/city_list.html', {'cities': cities})

它可以工作,但我希望它会在每个国家/地区自动显示,我不想在一个国家/地区创建一个视图。

我创建了指向国家/地区详细信息的视图,但是如何显示放置在该国家/地区中的城市?

def country_detail(request, pk):
    country = get_object_or_404(Country, pk=pk)
    return render(request, 'city/country_detail.html', {'country': country})
皮埃尔·克鲁兰西(Pierre Criulanscy)

您的城市模型与国家模型具有“多对多”关系。因此,在您的模板city.country中,它是指针对相关数据内置的django管理器。您需要遍历它:

{% for city in cities %}
    {% for country in city.country.all %}
        {{ city.name }}
        {{ country.name | linebreaks }}
    {% endfor %}
{% endfor %}

实际上,我认为您应该具有ForeignKey关系而不是ManyToMany,因为您的“国家/地区”模型中有许多城市,而“城市”中只有一个国家/地区。因此,您的最终代码应为以下代码:

class Country(models.Model):
    name = models.CharField(max_length=50)

class City(models.Model):
    name = models.CharField(max_length=50)
    country = models.ForeignKey(Country)

和您的初始模板代码:

{% for city in cities %}
     {{ city.name }}
     {{ city.country | linebreaks }}
{% endfor %}

编辑 :

如果要显示属于一个国家/地区的所有城市,django提供了相关的经理,因此您可以使用:

country.city_set.all()

或者,您可以在模型中为您的ForeignKey使用related_name,例如:

class City(models.Model):
    name = models.CharField(max_length=50)
    country = models.ForeignKey(Country, related_name="cities")

因此,您现在可以使用:

country.cities.all()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Django模板中显示模型数据

来自分类Dev

Ember模型数据未显示在模板中

来自分类Dev

如何在模板中显示父模型及其子模型

来自分类Dev

重新加载页面后,如何始终在Django模板中显示模型数据?

来自分类Dev

如何使用Observable在模板中显示数据?

来自分类Dev

如何在模板中显示数据

来自分类Dev

加载模型时如何在Ember中显示加载模板?

来自分类Dev

Django - 如何在模板中显示父模型属性

来自分类Dev

如何在 Django 模板中显示模型功能

来自分类Dev

如何在模板中显示数据库中的数据

来自分类Dev

如何从Django模型和HTML模板中获取数据

来自分类Dev

Django视图模板无法显示模型数据

来自分类Dev

DetailView模板不显示模型数据

来自分类Dev

无法在模板中显示模型信息

来自分类Dev

在 Django 的模板中显示模型的计算值

来自分类Dev

Ember 2.7模型继承-如何访问来自与父级相关的模型的模板中的数据?

来自分类Dev

Django //如何在模板中显示复杂的深度数据

来自分类Dev

如何在模板中显示django类方法的数据?

来自分类Dev

如何在Ember的错误模板中显示Promise拒绝数据?

来自分类Dev

如何在Vue.extend的模板中显示数据?

来自分类Dev

在ejs模板中显示数据

来自分类Dev

在模板中显示延迟的数据

来自分类Dev

laravel如何显示模型数据

来自分类Dev

如何在belongs_to模型中显示数据?

来自分类Dev

如何在belongs_to模型中显示数据?

来自分类Dev

显示网站中模型的数据

来自分类Dev

如何在模板中使用模型数据?

来自分类Dev

如何从yii模板访问模型数据

来自分类Dev

如何在Django模板中显示模型中的一个字段

Related 相关文章

热门标签

归档