2016-08-14 10 views
0

djangoを1.8.5から1.10にアップデートしました。 古いバージョンでは、複数の場所に関するエントリを検索するためにフィルタを使用しました。例:クエリーセットで外部キーをフィルタリングすることはできますか? Django

1人のユーザーに複数のストアがあります。このストアのそれぞれにレビューボードがあります。 ユーザーは、すべてのストアとそのレビューまたは特定のストアグループを検索する必要があります。

iは、次の参照を使用ジャンゴ1.8.5において

全店舗

locations = Locations.objects.filter(email=email) 

場所クエリセット(LOCATION1、LOCATION2等)

reviews = Reviews.objects.filter(location_id=locations) 

reviews = Reviews.objects.filter(location_id=group_content.locations.all()) 

レビューでは、ロケーションフィールドはForeignKey(Locations)であり、ロケーションはQuerysetです。

これはうまくいきました。しかし、10.10ではこの機能がなくなっているようです。 新しいDocsを見ても、元の機能を再現できるものは見つかりませんでした。

私のシステム全体はこの機能を中心に構築されているので、すべてを変更するには永遠にかかるでしょう。

新しいLookupがありますか?

models.py(レビュー):

class Reviews(models.Model): 
    location_adress = models.CharField(max_length=3000, default='', blank=True, null=True) 
    location_name = models.CharField(max_length=3000, default='', blank=True, null=True) 

    location_id = models.ForeignKey(LocationData) 
    plattform = models.CharField(max_length=3000, default='', blank=True, null=True) 

    reviewer_name = models.CharField(max_length=3000, default='', blank=True, null=True) 
    reviewer_picture = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_id = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_rating = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_date = models.DateTimeField(auto_now_add=False, auto_now=False, blank=True, null=True) 
    review_text = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_like_count = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_share_count = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_comment_count = models.CharField(max_length=3000, default='', blank=True, null=True) 
    review_image = models.CharField(max_length=3000, default='', blank=True, null=True) 
    next_entry = models.CharField(max_length=3000, default='', blank=True, null=True) 
    seen = models.BooleanField(default=False) 
    unseen_comments_count = models.IntegerField(default=0, null=True) 
    comments = models.ManyToManyField(ReviewComments) 
    scale = models.IntegerField(default=None,blank=True, null=True) 

    def __str__(self): 
     return self.location_name 

modely.py(ロケーション)

class LocationData(models.Model): 
     #Location Data 
     group_id = models.CharField(max_length=120, default='', blank=True, null=True) 
     location_id = models.CharField(max_length=120, default='', blank=True, null=True) 
     email = models.EmailField() 
     name = models.CharField(max_length=120, default='', blank=True, null=True) 
     street = models.CharField(max_length=120, default='', blank=True, null=True) 
     street_number = models.CharField(max_length=120, default='', blank=True, null=True) 
     opening = models.DateTimeField(auto_now_add=False, auto_now=True) 
     tel = models.CharField(max_length=120, default='', blank=True, null=True) 
     postal_code = models.CharField(max_length=120, default='', blank=True, null=True) 
     city = models.CharField(max_length=120, default='', blank=True, null=True) 
     country = models.CharField(max_length=120, default='', blank=True, null=True) 
     description = models.CharField(max_length=1120, default='', blank=True, null=True) 
     short_description = models.CharField(max_length=1120, default='', blank=True, null=True) 
     website = models.CharField(max_length=120, default='', blank=True, null=True) 
     location_email = models.CharField(max_length=120, default='', blank=True, null=True) 
     tags = models.CharField(max_length=120, default='', blank=True, null=True) 
     profilbild = models.CharField(max_length=320, default='', blank=True, null=True) 
     titelbild = models.CharField(max_length=320, default='', blank=True, null=True) 
    def __str__(self): #Python 3.3 is __str__ 
    return self.name  

結果:

>>> from reviews.models import Reviews 
    >>> from locations.models import LocationData 
    >>> l = LocationData.objects.all() 
    >>> Reviews.objects.filter(location_id=l) 
    <QuerySet [<Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>]> 

>>> Reviews.objects.filter(location_id=l[0]) 
<QuerySet [<Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>, <Reviews: Bspotted>]> 
>>> Reviews.objects.filter(location_id=l[1]) 
<QuerySet [<Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, <Reviews: Roberto American Bar>, '...(remaining elements truncated)...']> 
+0

エラーが表示された場合は、質問に投稿してください。 – Todor

+0

@Todor no errors、ただ希望の結果ではない – dk1990

+0

@Todorは結果を更新しました – dk1990

答えて

1

Lはクエリセットではなく、単一のオブジェクトであり、だからあなたはそのような何かをする必要があります:

Reviews.objects.filter(location__in=l) 
+0

ああありがとうございます! – dk1990

関連する問題