【发布时间】:2018-12-13 03:36:23
【问题描述】:
我正在尝试使用与 UserProfile 模型的一对一关系来扩展用户模型。我添加了一些布尔字段,并在视图中尝试将这些字段用作权限。
这是我的模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
FirstName = models.CharField(max_length=25)
LastName = models.CharField(max_length=25)
ProximityAccess = models.BooleanField(default=True)
NewProxAccess = models.BooleanField(default=False)
def __unicode__(self):
return self.user.username
这是我尝试使用的视图:
@login_required
def NewProx(request):
if UserProfile.NewProxAccess:
if request.method == 'POST':
form = ProxForm(request.POST)
if form.is_valid():
ProxPart_instance = form.save(commit=True)
ProxPart_instance.save()
return HttpResponseRedirect('/proximity')
else:
form = ProxForm()
return render(request, 'app/NewProx.html', {'form': form})
else:
raise PermissionDenied
我没有收到任何错误消息,但它没有按预期工作。我希望如果用户配置文件将 NewProxAccess 设置为 False 它会提高 PermissionDenied 但它不会。我已经连接了管理模块,我可以选择或取消选择该字段的复选框,但它没有效果。如果我注释掉其余部分,我可以让它显示 Permission Denied 错误,所以它必须在视图中(我认为)。我想我错过了将登录用户建立为用户实例的行,因此我们可以检查用户是否具有权限。我知道有很多方法可以做到这一点,并且可能有更好的方法,但为了学习,我缺少什么让这个工作?
谢谢 斯科特
【问题讨论】:
标签: django