Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-基于用户组的筛选器下拉选择_Python_Django_Django Forms - Fatal编程技术网

Python Django-基于用户组的筛选器下拉选择

Python Django-基于用户组的筛选器下拉选择,python,django,django-forms,Python,Django,Django Forms,我正在尝试根据用户组筛选表单下拉列表 要查找用户组,我使用自定义templatetag 模板标签 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.

我正在尝试根据用户组筛选表单下拉列表

要查找用户组,我使用自定义templatetag

模板标签

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>
表单的模板基于forms.py

forms.py

class ChangeTaskForm(forms.ModelForm):
  class Meta:
    model = GoalStatus
    fields = ('title', 'task_id','description','status', 'verified_by') 
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})
 path('task/<pk>/', views.move_goals, name='move_goals')
视图.py

class ChangeTaskForm(forms.ModelForm):
  class Meta:
    model = GoalStatus
    fields = ('title', 'task_id','description','status', 'verified_by') 
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})
 path('task/<pk>/', views.move_goals, name='move_goals')
url.py

class ChangeTaskForm(forms.ModelForm):
  class Meta:
    model = GoalStatus
    fields = ('title', 'task_id','description','status', 'verified_by') 
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})
 path('task/<pk>/', views.move_goals, name='move_goals')
path('task/',views.move\u goals,name='move\u goals')
因此,例如,如果用户在“开发者”组中,则状态的下拉选择将仅被验证和完成

您可以像下面这样做

views.py

forms.py

template.html


{%csrf_令牌%}
{{form.as_p}}
添加任务

我认为这不需要模板标签。

那么问题是什么呢?如果用户是group DEVELOPER,那么表单中可用的下拉选项将只被验证和完成,它不起作用,你是否在尝试实现一些东西,整个html代码在哪里工作?我应该添加视图和URL,如果user.groups.filter(name='DEVELOPER').exists():,此行抛出一个错误'NoneType'对象没有属性'groups',因此组可以是用户的对象,或者有更好的过滤方法吗?@OderaOkonkwo您是否在views.py
form=ChangeTaskForm(user=request.user)中将用户发送到表单中
?是的,我在我的视图中这样做了,但它仍然会抛出错误error@OderaOkonkwo复制粘贴上面的代码。它应该可以工作。它现在可以工作了,我一定键入了一些不同的东西,我只是复制和粘贴,它工作了,谢谢!