我使用django-registration进行注册和登录。我的Models和Forms.py运行得很好。问题是我希望将当前登录用户的id存储在以下Model的user字段中:
MALE = 1
FEMALE = 2
SEX_CHOICES = (
(MALE,'Male'),
(FEMALE,'Female'),
)
class UserProfile(models.Model):
#user = models.IntegerField() # update : Changed to ForeignKey.
user = models.ForeignKey(User)
gender = models.IntegerField(choices = SEX_CHOICES,null=True, blank=True)
zip_code = models.CharField(max_length=100,null=True, blank=True)
language = models.ManyToManyField(Category)我的ModelForm
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
widgets = {'language': forms.CheckboxSelectMultiple}更新2:这是我的view
def some_view(request):
if request.method == 'POST':
form = UserProfileForm(request.POST)
if form.is_valid():
form.save()
else:
form = UserProfileForm()更新:我可以在模板中使用{{ user.id }}获取当前登录的用户。但是现在我如何将这个id传递给user field呢
发布于 2011-12-17 22:58:00
在您的视图中,您可以通过request.user访问当前登录的user。
使此用户在您的Form中使用initial数据:
@login_required
def my_view(request):
logged_user = request.user
initial = {'user': logged_user}
form = MyForm(request.POST or None, initial=initial)
# Here your logical code
# ...
return HttpResponse(...)如果您使用的是ModelForm
@login_required
def my_view(request):
logged_user = request.user
form = MyUserProfileModelForm(
request.POST or None,\
instance=logged_user.get_profile())
# Here your logical code
# ...
return HttpResponse(...)注意:get_profile()是一个OneToOneField,如果你的数据库崩溃了,它可能会引发一个DoesNotExist异常(如果你在这里尝试过不同的方法,可能会发生这种情况)。
https://stackoverflow.com/questions/8545234
复制相似问题