Ich baue eine standortspezifische App. Was ich tun möchte, ist eine Liste der Schulen nach Stadt und Staat anzuzeigen. Die Seiten sind nach Bundesland geordnet. Auf den Staatsseiten werden Schulen angezeigt, die nach Städten sortiert sind.Wie kann ich in Django filtern, damit ich jedes Objekt in seine korrekte Eltern sortieren kann?
Staat
--- Stadt
------ Schule
--- Stadt
------ Schule
Ich kann den Zustand Seite erhalten die Liste der zum Anzeigen Städte sind in Ordnung. Aber anstatt Städte aus verschiedenen Staaten zu sortieren, erhalte ich eine Liste aller Städte, ohne dass sie in ihre korrekten Zustände sortiert werden. Ich kann auch nicht die Liste der Schulen in die richtige Stadt filtern. Die Städte und Schulen erscheinen in jedem Staat - auch die falschen.
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
urls.py
url(r'^(?P<slug>[-\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>
Ich verstehe nicht, Ihre Modellstruktur. Kannst du bitte auch deine anderen Modelle posten? Ich glaube auch nicht, dass Sie 'default = ''' in einem 'ForeignKey'-Feld haben wollen - setzen Sie stattdessen einfach' null = True'. – yedpodtrzitko
Veröffentlichen Sie sie jetzt. Vielen Dank für die Hinweise auf den ForeignKey. – user2901792
Haben Sie versucht, das Template "regroup" zu erkunden? Scheint so, als könnte es lösen, was du brauchst. https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#regroup –