Python Django-基于用户组的筛选器下拉选择
我正在尝试根据用户组筛选表单下拉列表 要查找用户组,我使用自定义templatetag 模板标签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.
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复制粘贴上面的代码。它应该可以工作。它现在可以工作了,我一定键入了一些不同的东西,我只是复制和粘贴,它工作了,谢谢!