Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将子孩子分为子孩子和父django_Django_Sorting_Filter_Relationship - Fatal编程技术网

将子孩子分为子孩子和父django

将子孩子分为子孩子和父django,django,sorting,filter,relationship,Django,Sorting,Filter,Relationship,这主要是有效的(多亏了前面问题的大量帮助) 现在,我想将子对象分为子对象和子对象,然后将子对象分为父对象。具体来说,我想将学校分为城市和各自的州。然后,我想让学校以正确的状态显示在正确的城市中。我要查找的内容如下: 状态 ---城市 -----学校 -----学校 -----学校 ---城市 -----学校 -----学校 -----学校 ---城市 -----学校 -----学校 -----学校 现在,我把城市分类到州里。但是,我不知道如何让学校分类到城市里。我正在阅读文档中的过滤器。我想答案

这主要是有效的(多亏了前面问题的大量帮助)

现在,我想将子对象分为子对象和子对象,然后将子对象分为父对象。具体来说,我想将学校分为城市和各自的州。然后,我想让学校以正确的状态显示在正确的城市中。我要查找的内容如下:

状态
---城市
-----学校
-----学校
-----学校
---城市
-----学校
-----学校
-----学校
---城市
-----学校
-----学校
-----学校

现在,我把城市分类到州里。但是,我不知道如何让学校分类到城市里。我正在阅读文档中的过滤器。我想答案就在那里。但是,当我试图将学校分类到城市里时,没有任何物体回来

有没有一种方法可以把“学校名单”作为“城市名单”的一个孩子来检索,而把“城市名单”作为一个州的孩子来保存?我很想知道如何检索

编辑:添加了学校模型。在一个城市内按名称对学校进行排序是理想的

任何和所有的帮助都将不胜感激

编辑:dkarchmer的解决方案非常有效。再次感谢。希望这对将来的其他人有用

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

def def sorted_schools(self):
    return self.school_set.all().order_by('school_name')

class School(models.Model):
    school_name = models.CharField(max_length=55, default='')
    school_slug = models.SlugField()
    city = models.ForeignKey(City, null=True)

    def __str__(self):
        return self.school_slug
views.py

class CityInStateView(ListView):
    model = City
    template = 'template.html'
    slug_field = 'state_slug'

    context_object_name = 'city_in_state_list'

    def get_context_data(self, **kwargs):
        context = super(CityInStateView, self).get_context_data(**kwargs)
        context['state'] = self.object
        context['city_list'] = self.object.city_set.all().order_by('city_name')
        return context
url.py

urlpatterns = [
    url(r'^$', SchoolIndexView.as_view(), name='school_index'),
    url(r'^(?P<state_slug>[\w-]+)/$', CityInStateView.as_view(), name='state_index'),
]
urlpatterns=[
url(r'^$',SchoolIndexView.as_view(),name='school_index'),
url(r'^(?P[\w-]+)/$”,citynStateView.as_view(),name='state_index'),
]
template.html

{% block main_content %}
<div class="row body">
    <div class="main_content">
        <div class="row">
           <h1>{{ state.state_name }}</h1>
            {% for city in city_list %}
               <h2>{{ city.city_name }}</h2>
               {% for school in city.sorted_schools %}
                   <h3>{{ school.school_name }} </h3>
               {% endfor %}
            {% endfor %}
        </div> 
    </div>
 </div>  
{% endblock %}
{%block main_content%}
{{state.state_name}
{城市中城市的%u列表%}
{{city.city_name}
{城市中的学校为%.u学校为%}
{{school.school\u name}
{%endfor%}
{%endfor%}
{%endblock%}

这件事已经困扰了我一个星期。请像我五岁一样向我解释。我提前感谢你的帮助。

最简单的方法就是在城市模型中添加一种方法来返回学校:

class City(models.Model):
    ...

    def sorted_schools(self):
        return self.school_set.all().order_by('school_name')
然后直接从模板中使用:

<div class="row body">
    <div class="main_content">
        <div class="row">
           <h1>{{ state.state_name }}</h1>
           {% for city in city_list %}
              <h2>{{ city.city_name }}</h2>
              {% for school in city.sorted_schools %}
                  <h3>{{ school.school_name }} </h3>
              {% endfor
           {% endfor %}
        </div> 
    </div>
</div>  

{{state.state_name}
{城市中城市的%u列表%}
{{city.city_name}
{城市中的学校为%.u学校为%}
{{school.school\u name}
{%endfor
{%endfor%}

如果您不想将该方法添加到模型中,第二种选择是使用templatetag来基本上执行相同的操作。

最简单的方法是将方法添加到城市模型中以返回学校:

class City(models.Model):
    ...

    def sorted_schools(self):
        return self.school_set.all().order_by('school_name')
然后直接从模板中使用:

<div class="row body">
    <div class="main_content">
        <div class="row">
           <h1>{{ state.state_name }}</h1>
           {% for city in city_list %}
              <h2>{{ city.city_name }}</h2>
              {% for school in city.sorted_schools %}
                  <h3>{{ school.school_name }} </h3>
              {% endfor
           {% endfor %}
        </div> 
    </div>
</div>  

{{state.state_name}
{城市中城市的%u列表%}
{{city.city_name}
{城市中的学校为%.u学校为%}
{{school.school\u name}
{%endfor
{%endfor%}

如果您不想将该方法添加到模型中,第二种选择是使用templatetag来基本上执行相同的操作。

是否要按城市内的名称对学校进行排序?另外,请添加
学校
模型。添加了学校模型。是的。我想按城市内的名称对学校进行排序。是否要按名称对学校进行排序n划分城市?另外,请添加
学校
模型。添加了学校模型。是的。我想按城市内的学校名称进行排序。