Django-ユーザーグループに基づいてドロップダウンの選択肢をフィルタリングする

オデラオコンクォ

ユーザーグループに基づいてフォームのドロップダウンリストをフィルタリングしようとしています

ユーザーグループを見つけるために、カスタムテンプレートタグを使用しています

テンプレートタグ

from django import template 

register = template.Library()

@register.filter(name='in_group')
def in_group(user,group_name):
    try:
        group=Group.objects.get(name=group_name)
    except Group.DoesNotExist:
        return False
    return group in user.groups.all()

task.html

  {% load group_check %}

<form method="post">
  {% csrf_token %}
  {% if user.is authenticated %}
  {% if requset.user|in_group:'DEVELOPER' %}
    #...DO SOMETHING

  {{ form.as_p }}



  <button type="submit">add task</button>
</form>

モデル

GOALS_TYPE= (('DT','Daily Task'),
        ('WT','Weekly Task'),
        ('V','Verified'),
        ('D','Done'),
)

class GoalStatus(models.Model):
    title = models.CharField(max_length=254, null=True) 
    task_id=models.IntegerField(default=1,null=False)
    description =models.CharField(max_length=254)
    verified_by=models.ForeignKey('ScrumyUser', on_delete= models.CASCADE, null=True)
    status=models.CharField(choices=GOALS_TYPE, max_length=2, default='DT')
    def __str__(self):
        return self.title

フォームのテンプレートはforms.pyに基づいています

forms.py

class ChangeTaskForm(forms.ModelForm):
  class Meta:
    model = GoalStatus
    fields = ('title', 'task_id','description','status', 'verified_by') 

views.py

def move_goals(request,pk):
  if request.method == 'POST':
    form = ChangeTaskForm(request.POST)
    if form.is_valid():
        return HttpResponseRedirect('/index/')
  else:
    form = ChangeTaskForm()
  return render(request, 'oderascrumy/task.html', {'form': form})

urls.py

 path('task/<pk>/', views.move_goals, name='move_goals')

したがって、たとえば、ユーザーがグループ「開発者」に属している場合、ステータスのドロップダウン選択は検証されて実行されるだけです。

anjaneyulubatta505

あなたは以下のようにすることができます

views.py

def move_goals(request,pk):
  if request.method == 'POST':
    form = ChangeTaskForm(request.POST, user=request.user)
    if form.is_valid():
        return HttpResponseRedirect('/index/')
  else:
    form = ChangeTaskForm(user=request.user)
  return render(request, 'oderascrumy/task.html', {'form': form})

forms.py

class ChangeTaskForm(forms.ModelForm):
  def __init__(self, *args, **kwargs):
     user = kwargs.pop('user', None)
     super(ChangeTaskForm, self).__init__(*args, **kwargs)
     if user.groups.filter(name='DEVELOPER').exists():
        self.fields['status'].choices = (('V','Verified'), ('D','Done'),)
  class Meta:
    model = GoalStatus
    fields = ('title', 'task_id','description','status', 'verified_by')

template.html

<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">add task</button>
</form>

このためのテンプレートタグは必要ないと思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Django-ユーザーグループに基づいてドロップダウンの選択肢をフィルタリングする

分類Dev

Django:CreateViewで現在のユーザーを取得し、これに基づいてForeignKey選択フィールドをフィルタリングする方法

分類Dev

次のステップに進まずに出力をレンダリングするDjangoのマルチステップフォームウィザード内に選択ボタンを作成するにはどうすればよいですか?

分類Dev

djangoでのmodels.charfieldの選択に応じてユーザーをフィルタリングする方法

分類Dev

モデルの外部キーフィールドに基づいてdjangoのドロップダウンメニューを開発する方法

分類Dev

Django-別のフィールドに基づいてフォームフィールドクエリセットをフィルタリングする

分類Dev

DjangoのforeignKeyフォームドロップダウンをフィルタリングする方法

分類Dev

Djangoフィルターは、ユーザーがドロップダウンフィルターの値を変更するとクエリを更新します

分類Dev

Django-データ時間フィールドに応じてドロップダウンメニューで外部キーの選択を制限する方法

分類Dev

django Restフレームワークシリアライザーのドロップダウンアイテムをフィルタリングする方法は?

分類Dev

Django:ユーザーグループのリストを取得し、そのリスト(辞書)をモデルフィールドの選択オプションとして使用するにはどうすればよいですか?

分類Dev

Django-ForeignKeyに基づいてオブジェクトをフィルタリングしますが、複数の選択肢がありますか?

分類Dev

Laravel:ユーザー選択ドロップダウンに基づいてクエリビルダーをフィルタリングする方法

分類Dev

(特定の条件に基づいてフィルタリングする)Django管理者フィルターの選択をオーバーライドする方法は?

分類Dev

Django フィルターを使用してユーザー プロファイルに基づいてデータへのアクセスを制限する

分類Dev

Django:選択した他のフォームフィールドオプションに基づいて、異なるクエリセットでフォームフィールド選択オプションを変更するにはどうすればよいですか?

分類Dev

django-admin が作成したカテゴリに基づいて、ブートストラップ ドロップダウンで Django フィルターを作成する

分類Dev

django-adminで選択フィールドオプションをフィルタリングする

分類Dev

ドロップダウンリストから選択された複数の値に対してdjangoフィルタークエリを作成するにはどうすればよいですか?

分類Dev

Django / Ajax-選択に基づいて結果をフィルタリングして表示する方法

分類Dev

ユーザーが送信するモデルを選択できるDjangoドロップダウンフォームを作成します

分類Dev

Django:3ステップの外部キー接続に基づいてクエリセットをフィルタリングします

分類Dev

djangoでフォローされていないユーザーをフィルタリングする方法

分類Dev

ログインしている現在のユーザーに基づくDjangoデータベースルーティング

分類Dev

Djangoでドロップダウンの選択肢を動的に削除する

分類Dev

Django-ドロップダウンのフォーム選択フィールドの検証を無効にする

分類Dev

Graphene / Djangoのユーザータイプに基づいてモデルのフィールドアクセスを制限する方法

分類Dev

前のフォームでの選択に基づいて、formtoolsウィザードでDjangoフォームのManyToManyFieldクエリセットを制限する

分類Dev

DjangoのドロップダウンフォームでListViewをフィルタリングする最良の方法

Related 関連記事

  1. 1

    Django-ユーザーグループに基づいてドロップダウンの選択肢をフィルタリングする

  2. 2

    Django:CreateViewで現在のユーザーを取得し、これに基づいてForeignKey選択フィールドをフィルタリングする方法

  3. 3

    次のステップに進まずに出力をレンダリングするDjangoのマルチステップフォームウィザード内に選択ボタンを作成するにはどうすればよいですか?

  4. 4

    djangoでのmodels.charfieldの選択に応じてユーザーをフィルタリングする方法

  5. 5

    モデルの外部キーフィールドに基づいてdjangoのドロップダウンメニューを開発する方法

  6. 6

    Django-別のフィールドに基づいてフォームフィールドクエリセットをフィルタリングする

  7. 7

    DjangoのforeignKeyフォームドロップダウンをフィルタリングする方法

  8. 8

    Djangoフィルターは、ユーザーがドロップダウンフィルターの値を変更するとクエリを更新します

  9. 9

    Django-データ時間フィールドに応じてドロップダウンメニューで外部キーの選択を制限する方法

  10. 10

    django Restフレームワークシリアライザーのドロップダウンアイテムをフィルタリングする方法は?

  11. 11

    Django:ユーザーグループのリストを取得し、そのリスト(辞書)をモデルフィールドの選択オプションとして使用するにはどうすればよいですか?

  12. 12

    Django-ForeignKeyに基づいてオブジェクトをフィルタリングしますが、複数の選択肢がありますか?

  13. 13

    Laravel:ユーザー選択ドロップダウンに基づいてクエリビルダーをフィルタリングする方法

  14. 14

    (特定の条件に基づいてフィルタリングする)Django管理者フィルターの選択をオーバーライドする方法は?

  15. 15

    Django フィルターを使用してユーザー プロファイルに基づいてデータへのアクセスを制限する

  16. 16

    Django:選択した他のフォームフィールドオプションに基づいて、異なるクエリセットでフォームフィールド選択オプションを変更するにはどうすればよいですか?

  17. 17

    django-admin が作成したカテゴリに基づいて、ブートストラップ ドロップダウンで Django フィルターを作成する

  18. 18

    django-adminで選択フィールドオプションをフィルタリングする

  19. 19

    ドロップダウンリストから選択された複数の値に対してdjangoフィルタークエリを作成するにはどうすればよいですか?

  20. 20

    Django / Ajax-選択に基づいて結果をフィルタリングして表示する方法

  21. 21

    ユーザーが送信するモデルを選択できるDjangoドロップダウンフォームを作成します

  22. 22

    Django:3ステップの外部キー接続に基づいてクエリセットをフィルタリングします

  23. 23

    djangoでフォローされていないユーザーをフィルタリングする方法

  24. 24

    ログインしている現在のユーザーに基づくDjangoデータベースルーティング

  25. 25

    Djangoでドロップダウンの選択肢を動的に削除する

  26. 26

    Django-ドロップダウンのフォーム選択フィールドの検証を無効にする

  27. 27

    Graphene / Djangoのユーザータイプに基づいてモデルのフィールドアクセスを制限する方法

  28. 28

    前のフォームでの選択に基づいて、formtoolsウィザードでDjangoフォームのManyToManyFieldクエリセットを制限する

  29. 29

    DjangoのドロップダウンフォームでListViewをフィルタリングする最良の方法

ホットタグ

アーカイブ