【发布时间】:2014-04-27 04:41:48
【问题描述】:
我在我的一个 django 项目中使用 userena。我决定在我的项目中包含一个自动推荐代码生成器选项。你知道,要使用 userena,我们必须创建一个额外的 django 应用程序并且必须创建一个配置文件模型。因此,我创建了一个名为 account 的应用程序,我的模型就是这样,
import uuid
import base64
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from django.db.models.signals import post_save
from userena.models import UserenaBaseProfile
from userena.utils import user_model_label
class MyProfile(UserenaBaseProfile):
user = models.OneToOneField(User,unique=True,
verbose_name=_('user'),related_name='my_profile')
favourite_snack = models.CharField(_('favourite snack'),max_length=5)
提到,这是之前我为自动推荐代码生成器添加功能的模型。然后我决定添加一些功能来为每个用户生成推荐代码与注册。这就是为什么我在我的模型中添加了一些功能,就像那样......
import uuid
import base64
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from django.db.models.signals import post_save
from userena.models import UserenaBaseProfile
from userena.utils import user_model_label
class MyProfile(UserenaBaseProfile):
user = models.OneToOneField(User,unique=True,
verbose_name=_('user'),related_name='my_profile')
favourite_snack = models.CharField(_('favourite snack'),max_length=5)
referral_code = models.CharField(max_length=300, blank=True, null=True)
def get_absolute_url(self):
return u'/profile/show/%d' % self.id
def generate_verification_code(self):
return base64.urlsafe_b64encode(uuid.uuid1().bytes.encode("base64").rstrip())[:25]
def save(self, *args, **kwargs):
if not self.pk:
self.referral_code = self.generate_verification_code()
elif not self.verification_code:
self.referral_code = self.generate_verification_code()
return super(MyProfile, self).save(*args, **kwargs)
现在注册后会为每个用户生成一个唯一的推荐代码。这很好,我对此没有任何问题,但是因为这个 MyProfile(鉴于上面)模型与 userena 相关,可能这就是为什么(实际上我不确定)我面临错误
'MyProfile' object has no attribute 'verification_code'
我正面临上述错误,同时我正在尝试使用默认 userena 个人资料编辑选项编辑我的个人资料。
我再次提及,上述错误发生同时我正在尝试使用默认 userena 个人资料编辑选项编辑我的个人资料
我也在发布引用..
环境:
请求方法:POST 请求网址:http://www.myproject.com/accounts/veer/edit/
Django Version: 1.5.5
Python Version: 2.7.4
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'photo',
'userena',
'guardian',
'easy_thumbnails',
'accounts',
'cloudinary',
'paypal.standard.ipn',
'myprofile',
'watermarker',
'mail',
'stored_messages',
'rest_framework',
'endless_pagination')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/codes/A/test/shutterstock/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/codes/A/test/shutterstock/userena/decorators.py" in _wrapped_view
28. return view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django_guardian-1.1.1- py2.7.egg/guardian/decorators.py" in _wrapped_view
106. return view_func(request, *args, **kwargs)
File "/codes/A/test/shutterstock/userena/views.py" in profile_edit
711. profile = form.save()
File "/codes/A/test/shutterstock/userena/forms.py" in save
241. profile = super(EditProfileForm, self).save(commit=commit)
File "/codes/A/test/shutterstock/django/forms/models.py" in save
370. fail_message, commit, construct=False)
File "/codes/A/test/shutterstock/django/forms/models.py" in save_instance
87. instance.save()
File "/codes/A/test/shutterstock/accounts/models.py" in save
23. elif not self.verification_code:
Exception Type: AttributeError at /accounts/veer/edit/
Exception Value: 'MyProfile' object has no attribute 'verification_code'
现在我的问题是,是否有任何其他方式可以通过注册或任何其他方式生成推荐代码,使用 userena 或者是否有任何解决我当前问题的方法**?
【问题讨论】:
-
你能发布回溯吗?
-
你可以看到,我已经编辑了我的帖子并添加了引用@skzryzg