Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Python 如何在django中进行过滤,以便将每个对象排序到其正确的父对象中?_Python_Django_Sorting_Filter - Fatal编程技术网

Python 如何在django中进行过滤,以便将每个对象排序到其正确的父对象中?

Python 如何在django中进行过滤,以便将每个对象排序到其正确的父对象中?,python,django,sorting,filter,Python,Django,Sorting,Filter,我正在构建一个特定于位置的应用程序。我想做的是按城市和州显示学校列表。这些页面是按州组织的。反过来,州页面显示按城市排序的学校 状态 ---城市 ------学校 ---城市 ------学校 我可以在状态页面上显示城市列表。但是,我没有将城市从不同的州中进行分类,而是得到了一份所有城市的列表,而没有将它们按正确的州进行分类。我也无法将学校列表筛选到正确的城市。每个州都有城市和学校——即使是不正确的 models.py class SchoolList(models.Model): sc

我正在构建一个特定于位置的应用程序。我想做的是按城市和州显示学校列表。这些页面是按州组织的。反过来,州页面显示按城市排序的学校

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

我可以在状态页面上显示城市列表。但是,我没有将城市从不同的州中进行分类,而是得到了一份所有城市的列表,而没有将它们按正确的州进行分类。我也无法将学校列表筛选到正确的城市。每个州都有城市和学校——即使是不正确的

models.py

class SchoolList(models.Model):
    school_list_image = models.ForeignKey(Photo, default='')
    school_list_state = models.ForeignKey('place.state', default='')
    school_list_city = models.ForeignKey('place.city', default='')
    school_list_zip_code = models.ForeignKey('place.zip', default='')
    school_list_address = models.ForeignKey('place.address', default='')
    school_list_contact = models.ForeignKey(Contact)
    school_list_university = models.ForeignKey('place.university', default='')
    school_list_professionalschool = models.ForeignKey('place.professionalschool', default='')
    school_list_summary = models.ForeignKey(Summary, default='')    

    def __str__(self):
        return self.school_list_university.university_name

class State(models.Model):
    state_name = models.CharField(max_length=20, default='')
    state_abbreviation = models.CharField(max_length=2, default='')

    class Meta:
        ordering = ['-state_name']

    def __str__(self):
        return self.state_name

class City(models.Model):
    city_name = models.CharField(max_length=55, default='')

    class Meta:
        ordering = ['-city_name']
        verbose_name_plural = 'Cities'

    def __str__(self):
        return self.city_name

class Zip(models.Model):
    zipcode = models.CharField(max_length=15, default='')

    class Meta:
        ordering = ['-zipcode']

    def __str__(self):
        return self.zipcode

class University(models.Model):
    university_name = models.CharField(max_length=55, default='')
    university_summary = models.CharField(max_length=255, default='')
    university_image = models.ForeignKey(Photo, default='')

    class Meta:
        verbose_name_plural = 'Universities'
        ordering = ['-university_name']

    def __str__(self):
        return self.university_name

class ProfessionalSchool(models.Model):
    school_name = models.CharField(max_length=100, default='')

    class Meta:
        verbose_name_plural = 'Professional Schools'
        ordering = ['-school_name']

    def __str__(self):
        return self.school_name

class Address(models.Model):
    address = models.CharField(max_length=100, default='')
    address2 = models.CharField(max_length=100, default='', blank=True)
    address3 = models.CharField(max_length=100, default='', blank=True)

    class Meta:
        verbose_name_plural = 'Addresses'

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

class StateDetail(ListView):
    model = StateSchoolListArticle
    template = 'state_detail.html'

    context_object_name = 'article_state_list'

    def get_context_data(self, **kwargs):
        context = super(StateDetail, self).get_context_data(**kwargs)
        context['school_list'] = SchoolList.objects.all().order_by('school_list_city')
        return context
url.py

url(r'^(?P<slug>[-\w]+)/$', StateDetail.as_view(), name='state_detail'),
url(r'^(?P[-\w]+)/$,StateDetail.as_view(),name='state_detail'),
template.html

{% for school in school_list %}
<h2>{{ school.school_list_city.city_name }}</h2>
<div class="school_image">
    {% cloudinary school.school_list_image.image format="jpg" crop="fill" %}
</div>
<div class="demo_wrapper">
    <div class="row">
        <div class="medium-4 columns">
            <div class="school_data_wrapper">
                <h3>{{ school.school_list_university.university_name }}</h3>
                <h4 style="margin-bottom: 10px;">
                    {{ school.school_list_professionalschool.school_name }}      </h4>
                <h4>{{ school.school_list_address.address }}</h4>
                <h4>{{ school.school_list_city.city_name }}, {{ school.school_list_state.state_name }} {{ school.school_list_zipcode.zipcode }}</h4>                                                
                <h4><a href="tel:555555555">{{ school.school_list_contact.telephone }}</a>
               </h4>
                <h4><a href="" rel="external nofollow">
                    {{ school.school_list_contact.website }}</a>
                </h4>
            </div>
        </div>
        <div class="medium-8 columns">
            <h3>Summary</h3>
            <p style="padding: 20px 0;">{{ school.school_list_summary.summary }}<a href="link to university detail page">...more</a></p>
        </div>
    </div>
</div>
{%学校中的学校\u列表%}
{{school.school\u list\u city.city\u name}
{%cloudinary school.school\u list\u image.image format=“jpg”crop=“fill”%%
{{school.school\u list\u university.university\u name}
{{school.school\u list\u professional school.school\u name}
{{school.school\u list\u address.address}
{{school.school_list_city.city_name},{{{school.school_list_state.state_name}{{school.school_list_zipcode.zipcode}
总结

{{school.school\u list\u summary.summary}


这并不是一个真正的答案,但它太长了,无法放在评论中

我一点也不喜欢
学校列表
模式。它在侵犯你,迟早会咬你的。模型应该代表真实世界。所以当你有一个邮政编码时,它就不存在了。它与一个城市有关。当你有城市时,它与一个州有关。因此,模型应如下所示:

class State(models.Model):
    state_name = models.CharField(max_length=20, default='')
    state_abbreviation = models.CharField(max_length=2, default='')

class City(models.Model):
    city_name = models.CharField(max_length=55, default='')
    state = models.ForeignKey(State)

class Zip(models.Model):
    zipcode = models.CharField(max_length=15, default='')
    city = models.ForeignKey(City)

class Address(models.Model):
    zip = models.ForeignKey(Zip)
    ...
现在,当您有地址时,您希望在那里有一个
ForeignKey(Zip)
。通过这种方式,您将在其中传递定义
Zip
City
State
,因此您可以(或者更像应该)将它们从
学校列表
模型中删除。 然后,当您想按州筛选学校时,可以通过以下方式进行:

SchoolList.objects.filter(address__zip__city__state=state_object)

这不是一个真正的答案,但它太长了,无法放在评论中

我一点也不喜欢
学校列表
模式。它在侵犯你,迟早会咬你的。模型应该代表真实世界。所以当你有一个邮政编码时,它就不存在了。它与一个城市有关。当你有城市时,它与一个州有关。因此,模型应如下所示:

class State(models.Model):
    state_name = models.CharField(max_length=20, default='')
    state_abbreviation = models.CharField(max_length=2, default='')

class City(models.Model):
    city_name = models.CharField(max_length=55, default='')
    state = models.ForeignKey(State)

class Zip(models.Model):
    zipcode = models.CharField(max_length=15, default='')
    city = models.ForeignKey(City)

class Address(models.Model):
    zip = models.ForeignKey(Zip)
    ...
现在,当您有地址时,您希望在那里有一个
ForeignKey(Zip)
。通过这种方式,您将在其中传递定义
Zip
City
State
,因此您可以(或者更像应该)将它们从
学校列表
模型中删除。 然后,当您想按州筛选学校时,可以通过以下方式进行:

SchoolList.objects.filter(address__zip__city__state=state_object)

我不明白你的模型结构。你能把你的其他型号也贴出来吗?另外,我认为您不希望在任何
ForeignKey
字段中设置
default=''
——只需在那里设置
null=True
。现在就发布它们。感谢您在ForeignKey上提供的提示。您是否尝试过探索
重组
模板标记?似乎它可以解决你需要的问题。
学校列表的目的是什么?我希望有一个像
学校
城市
这样的数据模型。您所指的
地点。*
名称是什么?什么是
StateSchoolListArticle
。将类名作为前缀添加到每个字段有什么好处?我创建了SchoolList,因为这是我唯一能想到的将事情分组的方法,这样学校就可以分为城市和州。我不理解你的模型结构。你能把你的其他型号也贴出来吗?另外,我认为您不希望在任何
ForeignKey
字段中设置
default=''
——只需在那里设置
null=True
。现在就发布它们。感谢您在ForeignKey上提供的提示。您是否尝试过探索
重组
模板标记?似乎它可以解决你需要的问题。
学校列表的目的是什么?我希望有一个像
学校
城市
这样的数据模型。您所指的
地点。*
名称是什么?什么是
StateSchoolListArticle
。将类名作为前缀添加到每个字段有什么好处呢?我创建了SchoolList,因为这是我唯一能想到的将事情分组的方法,这样学校就可以分为城市和州。谢谢。我认为这是正确的方法。但我不知道该怎么做。我仍然掌握着这个窍门。再次非常感谢,谢谢。我认为这是正确的方法。但我不知道该怎么做。我仍然掌握着这个窍门。再次非常感谢。