检查用户是否属于组视图中

时间:2013-12-13 16:11:43

标签: python django django-views

我想检查用户是否属于views.py中的'onetime'组或'monthtime'组,以便他们发布帖子。我使用不属于这两个组中的任何一个的用户帐户提交了表单,但我能够成功提交帖子。相反,它应该告诉我,我没有资格。

Models.py

class Emov(models.Model):
    user=models.ForeignKey(User)
    name=models.CharField(max_length=10)
    #otherfields

views.py

def e_hit(request):
    if request.method=="POST":
       form=EmovForm(request.POST, request.FILES)
       if form.is_valid():
           one=Group.objects.filter(name='onetime')
           month=Group.objects.filter(name='monthtime')
           if request.user in one or month:
               data=form.cleaned_data
               newesell=Emov(
                    user=request.user,
                    pub_date=datetime.datetime.now(),
                    name=data['name'])
               newpos.save()
               return HttpResponseRedirect('/approval/')
            else:
               return HttpResponse('You are not eligible')
         else:
            return HttpResponse('Fill the form')
      else:
         return render_to_response('post.html',{'EmovForm':EmovForm},context_instance=RequestContext(request))

3 个答案:

答案 0 :(得分:10)

试试这个,这可以节省你对数据库的一些点击,并且更具可读性:

request.user.groups.filter(name__in=['onetime','monthtime']).exists()

答案 1 :(得分:1)

我认为if request.user in one or month:应为if request.user in one or request.user in month:

答案 2 :(得分:0)

不要忘记给用户设置。现在我认为您的代码会将request.user与组进行比较,而不是将其与用户进行比较。之一:

if request.user in one.user_set.all() or reguest.user in month.user_set.all()

if one in request.user.groups.all() or month in request.user.groups.all()

应该做你需要的。