0

こんにちは私は以下のコードが正常に機能しています:

if getattr(hotel_main, "X", 1):
        hotels1 = hotels.filter(Q(X=True))
        for hotel in hotels1:
            if models.CalendarDay.objects.filter(hotel=hotel, date=date).count() == 0:
                similar_venues.append(hotel)

上記のコードを何度も再利用して、Q(Y = True)、Q(Y = True)、Q(Z = True)などのさまざまな条件を確認しました

条件に基づいてリストをフィルタリングできる場合は、繰り返しコードを取り除くことができます...次のようなものが必要です:similar_venues.filter(Q(X = True)) 助けてください...

4

2 に答える 2

0

私があなたが尋ねたことを正しく理解した場合:

filter_on_x = [obj for obj in similar_venues if obj.X]
filter_on_y = [obj for obj in similar_venues if obj.Y]

すべてのX、Y、Zについても同様です。

于 2012-09-18T14:47:22.267 に答える
0

リストに条件を書くことができます:

conditions = [ Q(Y=True),Q(Y=True),Q(Z=True) ]
if getattr(hotel_main, "X", 1):
    q_date = Q( calendarday__date = date )
    for q in conditions:
        for hotel in hotels.filter( q_date & q).distinct():
            similar_venues.append(hotel)
于 2012-09-18T14:49:45.980 に答える