2

ユーザー登録、ユーザープロファイル、およびログインを処理するためにdjango-userenaアプリケーションを使用しています。今、私はアプリケーションを書いています -

  1. ユーザーはコースを作成できます (コースは、コースに関する情報を保存するプロファイルのようなものです)。
  2. 他のユーザーもこのコースに登録できます。登録にはコース作成者の承認が必要です。
  3. コース作成者のみがコースページを編集でき、コースの課題を作成できます。
  4. コースに登録したすべてのユーザーは、コース ページとコースの割り当てを参照できます (読み取り専用)。
  5. コース作成者は、コースのすべての課題を編集する権限を他のユーザーに与えることができます。

解決策の 1 つは、作成者と変更者の 2 つのグループを作成することです。現在、作成者グループはコース ページを編集でき、変更者のメンバーはその特定のコースの割り当てを変更できます。このソリューションの問題は、ユーザーを作成者グループに追加すると、すべてのコースを編集する権限が自動的に取得されることです。同様に、修飾子グループのメンバーは、すべてのコースのすべての割り当てを編集できます。これは必須ではありません。

このアプリケーションをどのように設計すればよいですか?

4

3 に答える 3

0

各コースに 2 つの異なるグループを関連付けて、コースの作成時にそれらを作成することができます。

class Course(models.Model):
  creators = models.ForeignKey(Group)
  modifiers = models.ForeignKey(Group)

このようにして、このグループにパーミッションを設定できます。そして、django-guardianを使用して、この許可を割り当てて確認することができます。このようなもの:

assign_perm('edit_course', group, course)

次に、ユーザーがこのコースを編集できるかどうかを確認します(ユーザーグループからのグループ権限を自動的に確認します)

user.has_perm("edit_course",course)
于 2013-04-26T11:42:40.967 に答える