Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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
Python 在夹层项目上创建帐户时返回多个对象(配置文件)_Python_Django_Profiles - Fatal编程技术网

Python 在夹层项目上创建帐户时返回多个对象(配置文件)

Python 在夹层项目上创建帐户时返回多个对象(配置文件),python,django,profiles,Python,Django,Profiles,在我的本地环境中,我有一个可以使用pybb设置的夹层。pybb有一个抽象概要文件类来定义一些用户属性,并且还提供了一个概要文件类,以防您还没有使用它 除了最终创建用户的注册过程外,其他一切都正常工作,但会导致以下回溯: 我认为Pybb中间件可能是问题所在。我如何创建2个配置文件 class PybbMiddleware(object): def process_request(self, request): if request.user.is_authenticat

在我的本地环境中,我有一个可以使用pybb设置的夹层。pybb有一个抽象概要文件类来定义一些用户属性,并且还提供了一个概要文件类,以防您还没有使用它

除了最终创建用户的注册过程外,其他一切都正常工作,但会导致以下回溯:

我认为Pybb中间件可能是问题所在。我如何创建2个配置文件

class PybbMiddleware(object):
     def process_request(self, request):
         if request.user.is_authenticated():
             try:
                # Here we try to load profile, but can get error
                # if user created during syncdb but profile model
                # under south control. (Like pybb.Profile).
                profile = request.user.get_profile()
            except ObjectDoesNotExist:
                # Ok, we should create new profile for this user
                # and grant permissions for add posts
                user_saved(request.user, created=True)
                profile = request.user.get_profile()

            language = translation.get_language_from_request(request)

            if not profile.language:
                profile.language = language
                profile.save()

            if profile.language and profile.language != language:
                request.session['django_language'] = profile.language
                translation.activate(profile.language)
                request.LANGUAGE_CODE = translation.get_language()
保存在pybb的signals.py中的用户_:

def user_saved(instance, created, **kwargs):
    if not created:
        return
    try:
        add_post_permission = Permission.objects.get_by_natural_key('add_post', 'pybb', 'post')
        add_topic_permission = Permission.objects.get_by_natural_key('add_topic', 'pybb', 'topic')
    except ObjectDoesNotExist:
        return
    instance.user_permissions.add(add_post_permission, add_topic_permission)
    instance.save()
    if settings.AUTH_PROFILE_MODULE == 'pybb.Profile':
        from models import Profile
        Profile(user=instance).save()
除此之外,我还有另一个用户保存在accounts/models.py中:

@receiver(post_save, sender=User)
def user_saved(sender=None, instance=None, **kwargs):
    Profile.objects.get_or_create(**{str(user_field): instance})
是否同时调用这两个配置文件,从而创建两个配置文件

class PybbMiddleware(object):
     def process_request(self, request):
         if request.user.is_authenticated():
             try:
                # Here we try to load profile, but can get error
                # if user created during syncdb but profile model
                # under south control. (Like pybb.Profile).
                profile = request.user.get_profile()
            except ObjectDoesNotExist:
                # Ok, we should create new profile for this user
                # and grant permissions for add posts
                user_saved(request.user, created=True)
                profile = request.user.get_profile()

            language = translation.get_language_from_request(request)

            if not profile.language:
                profile.language = language
                profile.save()

            if profile.language and profile.language != language:
                request.session['django_language'] = profile.language
                translation.activate(profile.language)
                request.LANGUAGE_CODE = translation.get_language()

谢谢你的帮助

我怀疑您正在使用mezzanine.accounts并在settings.py中设置了AUTH_PROFILE_模块。mezzanine.accounts.models中的代码设置一个信号,以便在保存用户模型时生成一个配置文件。在使用tastypie创建用户和配置文件时,我实际上遇到了相同的问题

你弄明白了吗?