ユーザーがログインしているかどうかに基づいて、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)
私がやりたいのは、ユーザーがログインしている場合(および、いくつかのアクセス許可バックエンドに対するテストに基づいてこのリソースにアクセスできる場合)、ファイル属性を1つの値に設定し、ユーザーがログインしていない場合は別の値に設定することです。したがって、クライアントコードがResource.fileにアクセスしようとすると、ユーザーが「http://mysite.com/dummy_resource_for_people_without_access」にログインしていない場合、次のようになります。ただし、ユーザーがログインしてアクセス許可のテストに合格した場合、resource.fileの値は、実際にはそのリソースの実際のURLになります(そのリソースにアクセスするためのセキュリティキーなどを含む)。
私が読んだことから、現在ログインしているユーザーは、ビュー関数からモデルへのリクエストコンテキストを介して渡すことによってのみ考慮できるようです。ただし、上記のユースケースでは、特別な関数を呼び出すためのクライアントコードを必要とせずに、モデル内のアクセスをより厳密に制御しようとしています。