获取对象或全部在 django query_set



我有一个这样的模型:

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 的解决方案?

有,但它很丑陋:

return Product.objects.filter(**{'user': request.user}
    if request.user.is_authenticated else **{})

我认为 if/else 解决方案更好。

最新更新