2016-03-27 14 views
1

Ich erstelle eine Fußball-Website in Django und habe ein Problem festgestellt. Momentan sind meine Homepage und die Spielerseite in verschiedenen Apps. Ich habe die Fixture-Seite, so dass sie die Fixtures anzeigt, die von der Admin-Seite hinzugefügt wurden. Ich möchte den nächsten kommenden Artikel auf der Homepage einfügen, habe aber Probleme beim Importieren der Daten.Django Football Fixtures

Derzeit meine Leuchten/models.py Datei sieht wie folgt aus

from django.db import models 
from django.utils import timezone 


class Fixture(models.Model): 
    author = models.ForeignKey('auth.User') 
    opponents = models.CharField(max_length=200) 
    match_date = models.DateTimeField(
      blank=True, null=True) 

    def publish(self): 
     self.match_date = timezone.now() 
     self.save() 

    def __str__(self): 
     return self.opponents 

und meine Armaturen/views.py sieht aus wie

from django.shortcuts import render_to_response 
from django.utils import timezone 
from fixtures.models import Fixture 

def games(request): 
    matches = Fixture.objects.filter(match_date__gte=timezone.now()).order_by('match_date') 
    return render_to_response('fixtures/games.html', {'matches':matches 
    }) 

My home/models.py wie folgt aussieht:

from django.utils import timezone 
from django.db import models 

from fixtures.models import Fixture 

class First(models.Model): 
    firstfixture = models.ForeignKey('fixtures.Fixture') 

und home/views.py:

from django.utils import timezone 
from home.models import First 

def index(request): 
    matches = First.objects.all() 
    return render_to_response('home/index.html', {'matches':matches 
    }) 

Ich habe viele Kombinationen für meine for-Schleife ausprobiert, aber nichts zeigt die erforderlichen Informationen an. Meine for-Schleife, die für die Fixtures-App funktioniert, ist (in HTML);

{% for fixture in matches %} 
     <div> 
      <p>Vs {{ fixture.firstfixture.opponents }} - {{ fixture.firstfixture.match_date }}</p> 
     </div> 
    {% endfor %} 

Vielen Dank im Voraus

Antwort

1

Sie müssen all als Funktion aufrufen; ansonsten ist es nur abrufbar.

matches = First.objects.all() 

statt

matches = First.objects.all 

EDIT: Sie müssen tatsächlich die FK Ihrer ersten Instanz, um opponents zu bekommen zugreifen.

{% for fixture in matches %} 
    <div> 
     <p>Vs {{ fixture.firstfixture.opponents }} - {{ fixture.firstfixture.match_date }}</p> 
    </div> 
{% endfor %} 
+0

Siehe Bearbeiten; "Erste" Instanzen haben keine "Gegner" oder "Match_Datum" -Attribute; Sie müssen auf die zugehörige Fixture-Instanz zugreifen, wie oben gezeigt. –

+0

Es tut uns leid, immer noch keine Änderung –

+0

Achten Sie auch darauf, 'matches.all' in der Vorlage nicht aufzurufen; Verwenden Sie stattdessen "Übereinstimmungen". Sie greifen auf ein Queryset erster Instanzen zu. –