I’m using django-registration for registration and login purpose. My Models and Forms.py are working fine. The problem is I want to store the currently logged user’s id in the user field of the following Model:
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)
My ModelForm:
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
widgets = {'language': forms.CheckboxSelectMultiple}
Update 2: Here is my view:
def some_view(request):
if request.method == 'POST':
form = UserProfileForm(request.POST)
if form.is_valid():
form.save()
else:
form = UserProfileForm()
Update: I can get currently logged in user’s using {{ user.id }} in template. But now How do i pass this id to user field?
Well, in you view you can access the currently logged
userviarequest.user.Make this user
initialdata in yourForm:And if you are using a
ModelForm:Note:
get_profile()is aOneToOneFieldand may raise aDoesNotExistexception if your database is screwed (which may happen if you have tried different things here).