2017-03-11 3 views
0

Ich versuche, einen Queryset-Filter mit Django zu tun. Ich habe Coupon Objekte mit einer code, die eine CharField ist. Ich möchte alle Coupon Objekte mit einem passenden code finden.Django Queryset-Filter nach Beitragsvariable

Mein Modell:

class Coupon(models.Model): 
    code = models.CharField(max_length=50) 
    ... other fields 

Meine Ansicht:

# This method returns the queryset 
Coupon.objects.filter(code = "abc123") 

# This part of the code is not working the way I want to 
couponCode = str(request.POST.get("code")) 
Coupon.objects.filter(code = couponCode) 

Ich habe dafür gesorgt, dass das POST-Variable "abc123" ist, aber ich bin immer noch ein leeres queryset in der zweiten Abfrage zu bekommen.

+1

hinzufügen 'Coupon behaupten == 'abc123'' – e4c5

+0

hast du' couponCode' drucken und überprüft, was ist der Wert, oder wie oben Kommentar ein tun 'assert' check – Bijoy

Antwort

1

Verwenden Sie einfach

couponCode = request.POST['code'] 

statt

couponCode = str(request.POST.get("code")) 
+0

Beachten Sie, dass die Verwendung von request.POST ['code'] eine Ausnahme auslöst, wenn der Schlüssel nicht gefunden wird. Die sicherere Option ist request.POST.get ("code"), da sie einfach None zurückgibt, wenn der Schlüssel nicht gefunden wird. –

1

Entfernen Sie den str() Teil. Lassen Sie es nur als:

couponCode = request.POST.get("code"), dann könnten Sie tun:

Coupon.objects.filter(code=couponCode)

Hoffnung, das hilft.