Reputation: 159
I want to get information from current user in my forms.py
My Model:
class Users(models.Model):
first_name = models.CharField('First name', max_length=50)
....
user = models.OneToOneField(User, editable=False)
My view:
@login_required
def editAccount(request):
if request.method == 'POST':
form = EditAccountForm(request.user, request.POST)
if form.is_valid():
form.save()
My Form:
class EditAccountForm(forms.ModelForm):
class Meta:
model = Users
def __init__(self, user, *args, **kwargs):
self.user = user.get_profile()
I put in my settings.py AUTH_PROFILE_MODULE = "user.Users", I have this error: Deprecation Warning: The use of AUTH_PROFILE_MODULE to define user profiles has been deprecated. self.user = user.get_profile() I'm new on django I don't see my mistake. Thanks a lot
Upvotes: 2
Views: 7059
Reputation: 60
Another thing that you could do is simple call the model that created the user and request for the information. IE
class User(models.Model):
username = models.OneToOneField(User, editable=False)
first_name = models.CharField("Last name", max_length=50)
last_name = models.CharField("First Name", max_length=50)
email = models.EmailField(blank=True)
def __str__(self):
return "%s" % self.username
class UserProfileView(View):
def get(self, request):
self.user = request.user
#from here you can call your user model requesting for the user information.
self.userdetails = Users.objects.get(username=self.user)
if(self.userdetails):
#user exists
#you can pass this to the templates and perform actions on using loops
for details in self.userdetails:
print details.username
print details.first_name
print details.last_name
#.....
Upvotes: -1
Reputation: 430
The AUTH_PROFILE_MODULE setting, and the django.contrib.auth.models.User.get_profile() was depreciated in Django 1.5 See AUTH_PROFILE_MODULE
For your code try this:
models.y
class Users(models.Model):
user = OneToOneField(User, related_name="profile")
forms.py
class EditAccountForm(forms.ModelForm):
class Meta:
model = Users
def __init__(self, user, *args, **kwargs):
self.user = user.profile
Here's the related question with answers
Upvotes: 2
Reputation: 2382
There is no error in your code. What you see is just a deprecation warning.
Starting Django 1.5, AUTH_PROFILE_MODULE has been deprecated in favour of custom User models.
Your code should still work though, but ideally you should read up on custom User model and start using it.
Upvotes: 7