我正在编写一个包含大量表单的应用程序,其中包含许多必须按顺序提交的字段。表单的每个部分仅在用户具有访问权限时才可用,这些权限在其中一个模型中定义,管理员用户在满足条件时将其提供给用户。
我现在要做的是,当用户提交表单的该部分时,该用户可以删除该用户的权限。有没有办法实现这个目标?
以下是模型:
class PartidosUsuarios(models.Model):
idUsuario = models.ForeignKey(User)
idFifa = models.ForeignKey(PartidosFifa, null=True)
idPartido = models.CharField(max_length=20)
PaisL = models.CharField(max_length=250)
Local = models.IntegerField(max_length=11, default=0)
Visita = models.IntegerField(max_length=11, default=0)
PaisV = models.CharField(max_length=250)
Resultado = models.CharField(max_length=250)
Puntos = models.IntegerField(max_length=11, default=0)
Capturado = models.CharField(max_length=10, default="No")
class Meta:
permissions = (
("grupos", "Puede ver partidos de grupos"),
("octavos", "Puede ver partidos de octavos"),
("cuartos", "Puede ver partidos de cuartos"),
("semis", "Puede ver partidos de semis"),
("final", "Puede ver partidos de final"),
)
def __unicode__(self):
return unicode(self.idPartido)
以下是观点:
@login_required(login_url="/")
def inicio(request):
if request.method == "POST":
form = Pronosticos(request.POST)
for i in range(47):
pronostico, _ = PartidosUsuarios.objects.get_or_create(idUsuario=request.user, idPartido=request.POST.get("idPartido"+str(i), ""), PaisL=request.POST.get("PaisL"+str(i), ""), Local=request.POST.get("Local"+str(i), ""), Visita=request.POST.get("Visita"+str(i), ""), PaisV=request.POST.get("PaisV"+str(i), ""), Capturado="Si")
if pronostico.Local > pronostico.Visita:
pronostico.Resultado = "Local"
pronostico.save()
elif pronostico.Visita > pronostico.Local:
pronostico.Resultado = "Visita"
pronostico.save()
elif pronostico.Local == pronostico.Visita:
pronostico.Resultado = "Empate"
pronostico.save()
partidos_usuarios = PartidosUsuarios.objects.order_by("idPartido")
partidos_fifa = PartidosFifa.objects.order_by("Partido")[:64]
context = ({"partidos_fifa": partidos_fifa, "partidos_usuarios": partidos_usuarios})
return render(request, "brasil/inicio.html", context)
在这种情况下,提交表单时应删除的权限是名为" grupos"
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
嗯,如果您有一个名为 grupos 的role
并且您想要删除role
提交表单的权限,或者您是否愿意,那么对我来说并不是很清楚拥有一个名为 grupos 的自定义权限。但在这两种情况下,您都可以使用:permissions.utils.remove_permission(obj, role, permission)
其中:
<强> OBJ 强>
应删除权限的内容对象。
<强>作用强>
应删除权限的角色。
<强>许可强>
应删除的权限。权限对象或权限的代号。
因此,在您看来,只需在方便时调用此功能。
有关处理权限的详细信息,请参阅:Django API for manage permissions