I'm running Django 1.6.x
To extend my user I've added another model storing the data:
class UserProfile (models.Model):
user = models.ForeignKey(User)
height = models.IntegerField(blank=True, null=True)
Now I wand to add a view, which is allowing the user to add its own infos there. Started with django.views.generic.edit.CreateView
, but want also to provide at least the edit/update one to.
So I've added the import and created a view:
from django.views.generic.edit import CreateView, UpdateView
# ....
class UserProfileCreateView(CreateView):
model = UserProfile
fields = ['height']
Also I've added the entry inside urls.py:
url(r'^userprofile/new/$', login_required(UserProfileCreateView.as_view()), name="add_userprofile")
But now I'm stuck on the point how to assign the user ID in the correct way. I want to have this field set in background. Any hints?
You can do it that way:
class UserProfileCreateView(CreateView):
model = UserProfile
fields = ['height']
def form_valid(self, form):
user = self.request.user
form.instance.user = user
return super(UserProfileCreateView, self).form_valid(form)
This code is for Python 2.7.x
class UserProfileCreateView(CreateView):
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
self.object.save()
return super(ModelFormMixin, self).form_valid(form)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With