我想从我的forms.py
中获取当前用户的信息我的模特:
class Users(models.Model):
first_name = models.CharField('First name', max_length=50)
....
user = models.OneToOneField(User, editable=False)
我的观点:
@login_required
def editAccount(request):
if request.method == 'POST':
form = EditAccountForm(request.user, request.POST)
if form.is_valid():
form.save()
我的表格:
class EditAccountForm(forms.ModelForm):
class Meta:
model = Users
def __init__(self, user, *args, **kwargs):
self.user = user.get_profile()
我输入了我的settings.py AUTH_PROFILE_MODULE =“user.Users”,我有这样的错误:弃用警告:不推荐使用AUTH_PROFILE_MODULE来定义用户配置文件。 self.user = user.get_profile() 我是django的新手,我没有看到我的错误。 非常感谢
答案 0 :(得分:7)
您的代码中没有错误。你看到的只是一个弃用警告。
启动Django 1.5,AUTH_PROFILE_MODULE has been deprecated,转而使用自定义用户模型。
您的代码应该仍然可以使用,但理想情况下,您应该阅读custom User model并开始使用它。
答案 1 :(得分:2)
在Django 1.5中弃用了AUTH_PROFILE_MODULE设置和django.contrib.auth.models.User.get_profile()。请参阅AUTH_PROFILE_MODULE
对于您的代码,请尝试:
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
答案 2 :(得分:-1)
您可以做的另一件事是简单地调用创建用户的模型 要求提供信息。 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
#.....