【发布时间】:2015-07-13 16:54:25
【问题描述】:
考虑一下这个简单的用户配置文件:
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
onboarding_step = models.SmallIntegerField(default='1')
每次提交来自不同模型的单独表单时,它在 UserProfile 中增加 onboarding_step 的最简单方法是什么?例如:
这是我提交的 ModelForm(来自单独的模型、站点):
class OnBoardingProgressForm(forms.ModelForm):
class Meta:
model = Site
fields = ( 'abc', 'xyz', )
这是表单的 view.py:
if request.method == "POST":
form = OnBoardingProgressForm( request.POST )
if form.is_valid():
....
THIS CODE DOES NOT WORK BUT IS MY BEST GUESS:
last = request.user.profile
last.onboarding_step = 2
....
obj = form.save(commit=False)
obj.user = current_user
obj.save()
return render(request, "nextpage.html", {'form': form })
如何将user.onboarding_step 增加1?
【问题讨论】:
-
我不确定您在哪里遇到问题。你知道如何从请求中获取用户,你知道如何添加一个数字,你知道如何保存对象。你有什么问题?
-
@DanielRoseman 谢谢,不过我不知道正确的代码语法(或从哪里开始!)
-
但我仍然很难理解这一点。你知道如何做所有这些事情,你已经在上一个问题和这个问题中证明了这一点。你已经有
current_user;您知道如何从用户转到 userprofile 模型,并且您知道如何将一个数字添加到另一个数字。那么哪些位你不知道该怎么做呢? -
当我为 OnBoardingProgress 模型提交表单时,如何获取要保存在 userprofile 模型中的变量?
标签: django django-models django-forms django-views