在我的Django项目中,我有Products
。
您可以使用此网址格式访问产品:
example.com/tshirt
或example.com/jacket
等。
此外,您可以查看这些产品的其他页面,例如:
example.com/tshirt/details
或example.com/jacket/buy
我的问题:
当我在管理界面中创建新产品时,默认情况下会停用产品(我可以稍后激活它)。原因是,当我创建新产品时,我通常还没有获得所有必要的信息(即价格)。只要产品停用,所有以example.com/this-one-product
开头的网址都不应该对普通访问者可见(收到404错误)。不幸的是,我不知道该怎么做。
我的目标是超级用户或员工可见。因为有意义的是他们可以检查该产品并查看它在呈现时的样子。但是,如上所述,对于网页的普通访问者来说,它不应该是可见的。
现在我当然可以在所有这些视图中创建if语句(并检查是否超级用户或来自员工),但这听起来不像是一个优雅的解决方案。因为我必须将这些陈述添加到许多不同的观点中并且反对DRY,我只是不喜欢这个解决方案。
什么是完美的: 为已停用的产品的所有访问者提供404错误的设置。怎么可能?
答案 0 :(得分:0)
您定义了两个函数,它们返回request.user类型(员工/非员工)可见的查询集
我将其定义为查询集方法
get_queryset
现在您可以使用{{1}}等等。
此外,您可以定义两个自定义Manager类并覆盖{{1}}以使用上述两个中的任何一个。