我有一个这样的模型:
class Product(models.Model):
name = models.CharField(_('name'))
...
user = models.ForeignKey(User, related_name='products', on_delete=models.CASCADE, verbose_name=_('user'))
...
我希望:
如果用户经过身份验证:
返回用户产品
否则,如果用户未进行身份验证:
退回所有产品
在linq C#中我们可以用以下方法解决这个问题:
Product.Where(!request.user.is_authenticated() || user.id == request.user.id)
我知道在python中可以使用if else
来解决它:
if request.user.is_authenticated:
return Product.objects.filter(user=request.user)
else:
return Product.objects.all()
问题:有没有类似C#linq的解决方案?
答案 0 :(得分:0)
有,但它很难看:
return Product.objects.filter(**{'user': request.user}
if request.user.is_authenticated else **{})
我认为if / else解决方案更好。