Django - 根据用户组筛选下拉选项

时间:2018-05-10 14:57:59

标签: python django django-forms

我正在尝试根据用户组过滤表单下拉列表

要查找我正在使用自定义模板标签的用户组

模板标记

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')

因此,例如,如果用户位于“开发人员”组中,状态的下拉选项将仅验证并完成

0 个答案:

没有答案