Django(Python)を学んでいるときにこの問題を解こうとしています。djangoのテンプレートで親を子にソート
子オブジェクトを親にソートしたいと思います。具体的には、都市をそれぞれの状態に分類したいと思います。次に、都市を正しい状態でテンプレートに表示します。私はこのような希望を探しています何:
州
---市
---市
---市
編集:私はそれが多少働いてんです。しかし、都市はテンプレートで繰り返されています。私は一度だけそれぞれを表示する必要があります。誰かが私を助けてくれるかどうかを調べるために、テンプレートを含めました。
もう一度おねがいします。
models.py
class State(models.Model):
state_name = models.CharField(max_length=20, default='')
state_slug = models.SlugField()
state_image = models.ForeignKey(Image, null=True)
state_summary = models.TextField(null=True)
def __str__(self):
return self.state_slug
class City(models.Model):
city_name = models.CharField(max_length=55, default='')
city_slug = models.SlugField()
state_image = models.ForeignKey(Image, null=True)
school_image = models.ForeignKey(Image, null=True, related_name='+')
state = models.ForeignKey(State, null=True)
def __str__(self):
return self.city_slug
views.py
class CityInStateView(ListView):
model = City
context_object_name = 'city_in_state_list'
def get_context_data(self, **kwargs):
context = super(CityInStateView, self).get_context_data(**kwargs)
city = City.objects.all()
state = State.objects.get(state_slug=self.kwargs['state_slug'])
context['city_list'] = City.objects.filter(state=state).order_by('city_name')
return context
urls.py
urlpatterns = [
url(r'^$', SchoolIndexView.as_view(), name='school_index'),
url(r'^(?P<state_slug>[\w-]+)/$', CityInStateView.as_view(), name='state_index'),
]
template.html
{% block main_content %}
<div class="row body">
<div class="main_content">
<div class="row">
<div class="medium-12 columns small-centered">
<div class="feature_wrapper">
{% load cloudinary %}
<header class="page_header">
<div class="row">
<div class="medium-12 columns">Top bar</div>
</div>
</header>
<div class="search">
<div class="row">
<div class="medium-12 columns">Search bar</div>
</div>
</div>
{% if city_in_state_list %}
{% for city in city_in_state_list %}
<section class="hero">
{% cloudinary city.state_image.image format="jpg" crop="fill" %}
<p class="photo-caption">
{{ city.state_image.image_name }} by {{ city.state_image.image_author }} via {{ city.state_image.image_source }} | {{ city.state_image.image_license }}
</p>
</section>
<section class="summary">
<p>{{ city.state.state_summary }}</p>
</section>
<div class="row">
<div class="medium-12 columns listicle">
<div class="demo_wrapper">
<div class="long_ad_box">
<img src="http://placehold.it/728x90">
</div>
</div>
<div class="state_name">
<h2 class="headline">Nursing Schools in {{ city.state.state_name }}</h2>
</div>
{% if city_list %}
{% for school in city_list %}
<h2 style="text-align: left";>{{ school.city_name }}</h2>
<div class="school_image">
{% cloudinary city.school_image.image format="jpg" crop="fill" %}
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
{% endblock %}
これは1週間私のお尻を蹴ってきました。私のように私に説明してください。私はあなたの助けをすべて前もって感謝します。
試してみます。ありがとうございました。 – user2901792
テストなしでコーディングしているので、うまく動作しない場合はお知らせください。 – dkarchmer
私は試しました。私は今このエラーが発生しています:一般的な詳細ビューCityInStateViewは、オブジェクトpkまたはスラッグのいずれかで呼び出さなければなりません。 – user2901792