Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将用户连接到配置文件_Django_Django Models_Django Forms - Fatal编程技术网

Django 将用户连接到配置文件

Django 将用户连接到配置文件,django,django-models,django-forms,Django,Django Models,Django Forms,对于我的项目(Django 1.5),我设置了两个应用程序,一个称为accounts以处理身份验证,另一个称为profiles以处理所有配置文件操作。我已通过以下设置为accounts应用程序构建了自定义用户模型: class CustomUser(AbstractBaseUser): email = models.CharField() username = models.CharField is_staff... 对于个人资料应用程序: class UserProf

对于我的项目(Django 1.5),我设置了两个应用程序,一个称为accounts以处理身份验证,另一个称为profiles以处理所有配置文件操作。我已通过以下设置为accounts应用程序构建了自定义用户模型:

class CustomUser(AbstractBaseUser):
    email = models.CharField()
    username = models.CharField
    is_staff...
对于个人资料应用程序:

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    city = models.CharField()
    state = models....
我这样设置是因为我不希望在创建用户时实例化配置文件。我想在第一次登录时创建它

我正在尝试创建一个modelForm来帮助创建UserProfile。我对如何获取当前登录用户以便将其保存到OneToOneField有点困惑。我知道这与表单的init方法有关,但我查看了文档,似乎无法找到明确的解决方案。请帮忙!!因此,我创建了一个表单,如:

class BasicProfile(forms.ModelForm):
    class Meta:
        model = UserProfile
        exclude = ['foo']
我的问题:如何在表单中输入用户?我是否只使用:

self.user = request.user 
如果已启用,则请求对象附带一个用户属性。所以-是的,您可以使用request.user访问它

请注意,
request.user
也可以是
django.contrib.auth.models.AnonymousUser
。您必须首先通过调用
request.user.is\u authenticated()
来确保您正在处理一个“真实”用户


在ModelForms中使用exclude通常是个坏主意。起初这似乎是一个不错的方法,但当您的应用程序变得更大,并且您使用这个隐藏字段更改了您的用户模型时,您忘记添加“排除”。)

想明白了。@Jay-谢谢你让我走上正轨

forms.py:

class FormaholicsAnon(forms.Form):
    name = forms.Char...  
    ...

    def __init__(self, *args, **kwargs):

        self.user = kwargs.pop('user', None)
        super(FormaholicsAnon, self).__init__(*args, **kwargs)
views.py:

# Make sure the current user is not anonymous
if request.user.is_authenticated():
    form = FormaholicsAnon(request.POST, user=request.user)