我正在尝试根据用户是否登录有选择地处理我的 Django/Python 应用程序中的字段。基本上,我有一个类似于以下的模型:
class Resource(models.Model):
uploaded = models.DateTimeField()
name = models.CharField(max_length=200)
description = models.CharField(max_length=500, blank=True)
file = models.CharField(max_length=200)
我想要做的是,如果用户碰巧登录(并且可以根据针对某些权限后端的测试访问此资源),则将文件属性设置为一个值,如果用户未登录,则设置另一个值因此,当任何客户端代码尝试访问 Resource.file 时,如果用户未登录“http://mysite.com/dummy_resource_for_people_without_access”,它将得到类似以下内容。但是,如果用户已登录并通过了一些权限测试,那么 resource.file 的值实际上将是该资源的真实 url(包括访问该资源的任何安全密钥等)。
根据我的阅读,您似乎只能通过将请求上下文从视图函数传递给模型来考虑当前登录的用户。但是,在上述用例中,我试图在模型中更紧密地控制访问,而不需要客户端代码调用特殊函数。