我有模型订单和用户:
class Order(Model):
...
status = CharField(choices=STATUS, default=NEW, max_length=20)
referral_user = ForeignKey("app.User", CASCADE, 'referal', blank=True, null=True)
operator = ForeignKey("app.User", CASCADE,'operator', blank=True, null=True)
class User(Model):
...
orders_for_all_operators = BooleanField(default=True)
operators = ManyToManyField("User", related_name="admins")
我需要像这样过滤操作员的订单:
operators
字段或 orders_for_all_operators = True
我试过这段代码,但它不起作用:
qs = queryset.filter(Q(Q(referral_user__in=self.request.user.admins.all()) | Q(user__orders_for_all_operators=True)) | Q(Q(operator=None) | Q(operator=self.request.user)))
试试这个:
from django.db.models import Q
qs = Order.objects.filter(status='New').filter(
Q(operator=self.request.user) | Q(operator=None),
Q(referral_user__in=self.request.user.operators.all()) | Q(referral_user__orders_for_all_operators=True)
)