2016-06-19 6 views
0

ist meine relevanten Modelle sind ..Filtering auf fremde Attributschlüsseltabelle

class Books(models.Model): 

    name = models.CharField(max_length=120) 
    author = models.CharField(max_length=120) 
    edition = models.CharField(max_length=120) 

    class Meta: 
     unique_together = ('name', 'edition',) 

    def __str__(self): 
     return self.name 



class Items(models.Model): 

    book = models.ForeignKey(Books) 
    seller = models.ForeignKey(User,related_name = 'item_seller') 
    buyer = models.ForeignKey(User, related_name = 'item_buyer', null=True,blank= True) 
    requestee = models.ManyToManyField(User,related_name = 'item_requestee',blank= True) 
    cost_price = models.DecimalField(max_digits=8, decimal_places=2) 
    sale_price = models.DecimalField(max_digits=8, decimal_places=2) 
    sold = models.BooleanField(default=False) 
    date_added = models.DateTimeField(auto_now=False, auto_now_add=True) 

    def __str__(self): 
     return self.book.name 

Und das ist der Teil im Hinblick fuction, wo ich auf Fremdschlüsseltabelle des Attribut zu filtern versuchen

book_item = Items.objects.filter(book__name==q) 

Wo q ist eine Zeichenfolge, die ein Benutzer erhält.

Aber ich bekomme Fehler - book__name not defined. Was mache ich falsch ?

+0

Sie müssen '=' und nicht '==' verwenden. – rfkortekaas

Antwort

1

Sie verwenden eine boolean operatorfoo==bar, in der Sie eine assignment operatorfoo=bar verwenden sollten.

Tun Sie das nicht:

book_item = Items.objects.filter(book__name==q) 

tun statt:

book_item = Items.objects.filter(book__name=q) 

Wenn Filter ruft Sie es durch alle Items aussehen möchten, dass die Items erstellt und zurück wurden, die eine Book haben Das hat eine name= (equal) zu q (oder was auch immer Suchvariable Sie suchen).