我正在嘗試進一步過濾查詢以僅顯示組與登錄用戶組匹配的記錄。我是 Python 新手,不知道如何在下面的視圖中添加額外的過濾器。
看法
@login_required(login_url='login')
def home(request):
q= request.GET.get('q') if request.GET.get('q') != None else ''
infs= Infringement.objects.filter(Q(name__icontains=q) |
Q(infringer__name__icontains=q)
)
模型
class Infringement (models.Model):
name = models.CharField(max_length=200)
link = models.CharField(null=True, blank=True, max_length=200)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
infringer = models.ForeignKey(Infringer, on_delete=models.SET_NULL,null=True)
player = models.ForeignKey(Player, on_delete=models.SET_NULL,null=True)
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL,null=True)
status = models.ForeignKey(Status, on_delete=models.SET_NULL,null=True)
groups = models.ForeignKey(Group, on_delete=models.CASCADE,default=1)
class Meta:
ordering = ['-updated', '-created']`
我嘗試添加以下內容,但它不起作用。
infs= Infringement.objects.filter(Q(name__icontains=q) |
Q(infringer__name__icontains=q|)
(groups=request.user.groups)
)
uj5u.com熱心網友回復:
您可以使用以下方式過濾:
from django.db.models import Q
@login_required(login_url='login')
def home(request):
q = request.GET.get('q', '')
infs = Infringement.objects.filter(
Q(name__icontains=q) | Q(infringer__name__icontains=q),
groups__user=request.user,
)
# …
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/529749.html
