Ich versuche, mehr als zwei Abfragen innerhalb meiner IndexView
auszuführen, und zeige die Ergebnisse in meiner Vorlage an. Allerdings kann ich nicht beide Entry.objects.filter(date=today_date)
und Savings.objects.filter(id=1)
-get_context_data
hinzuzufügen scheinen, ohne es erroring heraus zu sagen:Abfrage von zwei Modellen in der klassenbasierten Ansicht
umge für ‚Entry-Update‘ mit den Argumenten ‚(‘ ‚)‘ und Stichwort Argumente ‚{} ' nicht gefunden. 1 Muster (n) versucht: [ 'Tracker/entry/update/(? P [0-9] +)/$']
Wie würde ich mich über Daten von zwei verschiedenen Modellen in einer Ansicht ziehen ?
def get_context_data(self, **kwargs):
et = super(IndexView, self).get_context_data(**kwargs)
et['filter'] = Entry.objects.filter(date=today_date), (Savings.objects.filter(id=1))
return et
Vielen Dank im Voraus für Ihre Hilfe: Genauer gesagt, wie würde ich so etwas wie dies an der Arbeit!
views.py
class IndexView(generic.ListView):
template_name = 'argent/index.html'
context_object_name = 'object_list'
def get_queryset(self):
return Entry.objects.all()
def get_context_data(self, **kwargs):
et = super(IndexView, self).get_context_data(**kwargs)
et['filter'] = Entry.objects.filter(date=today_date)
return et
models.py
class Entry(models.Model):
date = models.DateField(blank=True, null=True,)
euros = models.CharField(max_length=500, blank=True, null=True)
comments = models.CharField(max_length=900, blank=True, null=True)
euros_sum = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
xrate = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
dollars_sum = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
daily_savings_dollars = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
daily_savings = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
def get_absolute_url(self):
return reverse('argent:detail', kwargs={'pk': self.pk})
def item_date(self):
row_title = self.date
return row_title
class Savings(models.Model):
total_spent_euros = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
total_spent_dollars = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
total_savings = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
def get_absolute_url(self):
return reverse('argent:detail', kwargs={'pk': self.pk})
EDIT: Ich ausführlicher zu diesem Beitrag hinzugefügt.
Welchen Fehler erhalten Sie? Weil das der gute Ansatz ist. Sie fügen in Ihrem Kontext das neue Abfrageergebnis hinzu. Und in object_list haben Sie das Ergebnis der Methode get_queryset(). – Wilfried
Die Fehler geben meistens an, dass 'get_queryset' oder' get_context_data' bereits definiert sind und daher nicht wieder verwendet werden können, was sinnvoll ist. Aber was ich nicht herausfinden kann, ist das Verbinden mehrerer Abfragen innerhalb einer einzelnen 'get_queryset'- oder' get_context_data'-Funktion. Ich versuche, Daten aus 'Entry.objects.filter (date = today_date)' und auch aus 'Savings.objects.filter (id = 1)' zu ziehen und dann beide Ergebnisse in der Vorlage anzuzeigen. – grigs