2015-02-14 3 views
0

Я пытаюсь понять, как именно работает запрос на Django, я следил за учебниками, которые он не работает. Я не уверен, что я делаю неправильно.QuerySet в Django - возвращает исключение

Когда я бегу

BeneficientePagar.objects.filter(nome__contains="Joao Pedro") 

возвращает

"Варианты выбора% S" % S (имя, "" присоединиться (доступно).)) Django.core.exceptions.FieldError: Не может разрешить ключевое слово «Нома в поле Варианты:. ID, beneficiente, beneficiente_id, присоединиться, join_id, moeda

from django.db import models 

# Create your models here. 

class Moeda(models.Model): 
    moeda_ficticia = models.FloatField() 

class Join(models.Model): 
    nome = models.CharField(max_length=150) 
    nascimento = models.DateField() 
    cpf = models.IntegerField(primary_key=True) 
    endereco = models.CharField(max_length=150) 
    email = models.EmailField() 

    def __str__(self): 
     return self.nome 

class Beneficiente(models.Model): 
    ID = models.AutoField(primary_key=True) 
    nome = models.CharField(max_length=150) 
    CNPJ = models.IntegerField(max_length = 10) 
    def __str__(self): 
     return self.nome 

class Favores(models.Model): 
    ID = models.AutoField(primary_key=True) 
    favor = models.CharField(max_length=150) 
    dataInserido = models.DateField() 
    usuarios = models.ForeignKey(Join) 
    def __str__(self): 
     return self.favor 

class BeneficientePagar(models.Model): 
    ID = models.AutoField(primary_key=True) 
    moeda = models.IntegerField() 
    beneficiente = models.ForeignKey(Beneficiente) 
    join = models.ForeignKey(Join) 
    def __str__(self): 
     return self.ID 

заранее спасибо

ответ

0

Вы получаете сообщение об ошибке, поскольку nome является полем на Beneficiente, а не BeneficientePagar.

Вы можете сделать

Beneficiente.objects.filter(nome__contains="Joao Pedro") 

, который будет возвращать QuerySet из Beneficiente с. Или, если вам нужно BeneficientePagar, вы можете запросить внешний ключ.

BeneficientePagar.objects.filter(beneficiente__nome__contains="Joao Pedro") 
+0

Weird, он doens't дать мне ошибку, но она возвращает "[]". Я думал, что он вернет информацию, доступную для этого имени («Joao Pedro»). И если я редактирую: BeneficientePagar.objects.filter (join__nome__contains = "Joao Pedro") возвращает объект, находящийся на BeneficientePagar. Что странно, поскольку я думал, что он вернет имя, которое является одной таблицей Join. – MyNameIsHaruo

+0

'BeneficientePagar.objects.filter()' всегда возвращает объекты «BeneficientePagar». Если запрос 'beneficiente__nome__contains =" ​​Joao Pedro "' возвращает '[]', то нет объектов «BeneficientePagar», связанных с «Beneficiente» с номом, содержащим «Joao Pedro». Когда вы делаете фильтр 'join__nome__contains =« Joao Pedro »', он возвращает объекты «BeneficientePagar», связанные с 'Join' с именем Joao Pedro. – Alasdair

+0

У меня это получилось. Я думаю, что у меня большая путаница. хотел бы, чтобы это удалось получить информацию через Foreginkey. Я думал, что если я смогу использовать данные, используя класс «BeneficientePagar», я имею в виду, что данные доступны в Class Join и Beneficiente. Я просмотрел документы на django, и я подумал, что это это все другие советы? Спасибо – MyNameIsHaruo

1

При использовании BeneficientPager, что вам нужно сделать

BeneficientePagar.objects.filter(beneficient__nome__contains="Joao Pedro")