2016-08-06 2 views
2

モデルとインラインモデルがあります。 インラインモデルからデータを取得し、テンプレート内でforループを返すクエリーセットを作成する必要があります。 ..誰でも助けてくれますか?インラインモデルのループクエリーセット

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

私は、ビューがアカウントのパテントを取得する理由を理解していません。何もしません。コードの問題は.filter()です。アカウントモデルの 'name'フィールドは外部キーではありません。だからあなたは__表記を使うことができません。私が理解すれば、代わりにRates.objects.filter(..)に変更する必要があります。そうでない場合は、照会したいレコードが何であるかを説明してください – user3599803

答えて

1

アカウント名はXXX

である場合にはループのための私は、すべての料金を取得する必要があります次に、この:

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

この

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

ようにしますか、あなたがしたい場合は、アカウント名にXXXが含まれている料金をすべて取得する

'rates': Rates.objects.filter(name__name__icontains='XXX') 
関連する問題