後に消える:このコマンドの後Djangoのクエリセットは、私はそうのようなシンプルなDjangoのコマンドを持ってupdateコマンド
class OrderQuerySet(models.query.QuerySet):
def filter_vendor(self, vendor):
return self.filter(agreement_vendors_merchandise_list__agreement_vendors__vendor = vendor)
def suggestions(self, legal_entity_own):
result = self.filter(status_id = 1, is_active_flg = 1)
pending_orders = Order.objects.filter_legal_entity_own(legal_entity_own).\
with_pending_status()
vendor_id_list = pending_orders.values('agreement_vendors_merchandise_list__agreement_vendors__vendor').distinct()
vendors = Vendors.objects.exclude(id__in = vendor_id_list)
result = result.filter_vendors(vendors)
return result
class Order(models.Model):
objects = OrderQuerySet.as_manager()
def my_strange_behaviour_view
suggested_orders_qs = Order.objects.suggestions(legal_entity_own_instance).\
filter(chosen_quantity__gt = 0)
order_qs_by_vendor = suggested_orders_qs.filter_vendor(v)
order_qs_by_vendor.update(status_id = 2) # This command makes the queryset empty
、クエリセットが空になります! 私はただ迷っています。そして、ドキュメンテーションのヒントを見つけることはできません。誰でも何が起こっているのか説明できますか?
提案 - あなたが代わりにクエリセットに複数のフィルタを適用するので、多段階のフィルタを構築しようとしている場合は、あなたの代わりにフィルタのリストを構築することができますし、骨材と同じ(一度終わりにそれを適用し、内線RAの値、除外、順序付け)。 – serg
Serg、「フィルタのリスト」の意味の短い例を教えてください –
このようなフィルタを連鎖する代わりに、このqueryset.filter(field1 = 'value1')。filter(field2 = 'value2') '' filter = {'field1': 'value1'、 'field2': 'value2'} 'フィルタの辞書を作成し、' queryset.filter(** filters) 'を一度適用する方が便利かもしれません。 – serg