Включая дополнительное поле в профиле django userena
Я включил дополнительное поле в мою модель myprofile, как это..
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)
теперь после регистрации генерируется реферальный код, и это нормально. Но когда я пытаюсь отредактировать свой профиль, используя опцию редактирования профиля userena, я сталкиваюсь с ошибкой, подобной этой...
AttributeError at /accounts/veer/edit/
'MyProfile' object has no attribute 'verification_code'
это ошибка, потому что я добавил новое поле (код реферала) в моей модели Myprofile?? если это так, то что я должен сделать, чтобы настроить новое поле (например, referral_code) с userena?
1 ответ
Просто предположение, вы можете иметь referral_code в качестве поля свойства. вместо поля модели
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)
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:
referral_code = property(generate_verification_code)
elif not self.verification_code:
referral_code = property(generate_verification_code)
return super(MyProfile, self).save(*args, **kwargs)
Включают referral_code
поле в вашем админе. Вы можете проверить с помощью print (self.instance.referral_code)