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)...']>
エラーが表示された場合は、質問に投稿してください。 – Todor
@Todor no errors、ただ希望の結果ではない – dk1990
@Todorは結果を更新しました – dk1990