2016-08-06 4 views
2

haben ein Modell und Inline-Modell .. Ich muss ein Abfrage-Set erstellen, die Daten aus dem Inline-Modell abruft und eine For-Schleife in einer Vorlage zurückgibt .. Sieht aus wie mein Code nicht funktioniert ..Kann jemand helfen?For loop queryset von Inline-Modell

class Account(models.Model): 
    uuid = ShortUUIDField(unique=True) 
    name = models.CharField(max_length=80) 
    desc = models.TextField(blank=True) 
    address_one = models.CharField(max_length=100) 

    def __str__(self): 
     return u"%s" % self.name 

class Rates(models.Model): 
    airline = models.CharField(max_length=30, blank=True, verbose_name= 'AIRLINE') 
    dest = models.CharField(max_length=3,blank=True,verbose_name= 'DEST') 

    name= models.ForeignKey (Account, default = False, related_name="rates") 
     def __str__(self): 
     return self.airline 

My for loop should retrieve all rates in case account name is XXX 

def rates_acc(request, account): 
    account = Account.objects.get(name = xxx) 
    rates = [x for x in account.rates.all()] 
    context = { 

     'rates': Account.objects.filter (name__name__icontains = 'xxx'), 
     } 
    return render(request,'accounts/account.html',context) 
+0

Ich verstehe nicht, warum die Ansicht Konto patameter bekommt - Sie tun nichts damit. Das Problem mit Ihrem Code ist die .filter(), das Feld "Name" im Account-Modell ist kein Fremdschlüssel. Sie können also die __-Notation nicht verwenden. Wenn ich das verstehe, sollten Sie stattdessen rates.objects.filter (..) ändern. Wenn nicht, bitte erläutern Sie, welche Datensätze Sie abfragen möchten – user3599803

Antwort

1

Meine for-Schleife sollten alle Preise bei Kontonamen abrufen XXX

Dann folgt aus:

'rates': Account.objects.filter(name__name__icontains='xxx) 

Sollte wie sein diese

'rates': Rates.objects.filter(name__name='XXX') 

OR Wenn du möchtest bekomme alle Preise, wo Kontoname enthält XXX