我有一个网站,当用户点击一个bootstrap glyphicon链接时,他们应该被重定向到另一个页面,这个页面是相同的glyphicon,但是是绿色,看起来好像通过按下链接他们激活了按钮。在此过程中,我希望active
上的字段Profile
从False
转到True
。我有以下代码:
models.py:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
university = models.CharField(max_length=30, blank=True)
ROLE = (
('CUSTOMER', 'User'), # (value to be set on model, human readable value)
('WORKER', 'Worker'),
)
role = models.CharField(max_length = 20, choices = ROLE, default = 'USER')
active = models.BooleanField(default = False)
views.py
def active(request):
request.user.profile.active = True;
return render(request, 'core/customer_active.html', {'user': request.user})
home.html的:
<a href="{% url 'active' %}"><span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span></href>
我不确定为什么request.user.profile.active = True;
不会更新字段的状态,会是什么?
答案 0 :(得分:2)
正如其他人所说,你需要保存。但是,您需要保存配置文件,而不是用户,因为这是一个单独的模型。
profile = request.user.profile
profile.active = True
profile.save()
答案 1 :(得分:0)
这是对“活跃”财产的永久性更改吗?如果是这样,您需要保存用户对象。像这样:
def active(request):
request.user.profile.active = True;
request.user.save()
return render(request, 'core/customer_active.html', {'user': request.user})
编辑:可能值得注意的是,这不是更新用户个人资料的最智能方式,每次他们点击此视图时都会保存此属性,但如果您只是想知道为什么True
值不是这就是原因。