Ich möchte Abfrage basierend auf drei Benutzereingaben filtern. Abfahrt Stadt, Ankunft Stadt und Datum. Abfahrt Stadt und Ankunft Stadt sind auf dem gleichen Tisch mit dem Namen Route, während das TravelDate ein Fremdschlüssel in Route ist. Mein ModellDjango-Filterabfrage mit Fremdschlüssel
class TravelDate(models.Model):
start_date = models.DateField(null = True)
interval = models.IntegerField(null = True)
class Route(models.Model):
depart_city = models.CharField(max_length=50, null=True, blank=False)
arrive_city = models.CharField(max_length=50, null=True, blank=False)
driver = models.ForeignKey(Driver)
schedule = models.ForeignKey(Schedule)
traveldate = models.ForeignKey(TravelDate)
Meine Ansicht
def newpage(request):
if 'origin' in request.GET and request.GET['origin']:
q = request.GET['origin']
c = request.GET['dest']
d = request.GET['travelDate']
results = Route.objects.filter(depart_city=q, arrive_city=c)
return render(request,'busapp/newpage.html', {'results': results})
else:
return render(request, 'busapp/newpage.html',{})
In Ansichten, wie kann ich eine Abfrage machen, die depart_city, arrive_city und Reisedatum dieser Strecken basierend auf Benutzer auswählen, wird inputed. Wenn ein Bus an diesem Datum von Stadt A nach Stadt B verfügbar ist, wird er berechnet, indem man so etwas macht if (d - TravelDate.start_date)% TravelDate.interval =0
und zeigt dann die Ergebnisse dem Benutzer an.
Ich kann das nicht richtig machen. Ich bin neu in Django und versuche zu lernen.
Vielen Dank für die schnelle Antwort. Ich bin mir nicht sicher, warum ich diesen Fehler bekomme: if (d - route.traveldate.start_date)% route.traveldate.interval == 0: TypeError: nicht unterstützte Operandentyp (en) für -: 'unicode' und ' datetime.date – Florian
Sie sollten mit timedelta berechnen, ob die Route Ihre gewünschte ist, also die Einheit des Intervalls was ist? – Ykh
siehe Antwort Update – Ykh