2014-04-26 5 views
0

У меня есть включать в себя дополнительное поле в моей MyProfile модели, как это ..включая дополнительное поле в Джанго userena профиль

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) 

теперь, после регистрации, направление код генерирует, тот ok.but, когда я пытаюсь изменить мой профиль, используя userena опции редактирования профиля, я столкнулся ошибка, как и что ...

AttributeError at /accounts/veer/edit/  
'MyProfile' object has no attribute 'verification_code' 

это повышение ошибки, потому что я добавил новое поле (код направления) в моей MyProfile модели ?? если это так, то что мне делать, чтобы настроить новое поле (например, referral_code) с userena?

ответ

0

Просто предположим, вы можете иметь referral_code как поле свойств. вместо modelField

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)

+0

повышение ошибки ** глобальное имя «generate_verification_code» не определено ** при попытке зарегистрировать или зарегистрировать нового пользователя Ria – zogo