0

I have include a extra field in my myprofile model like this..

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)

now after the signup , referral Code is generating,thats ok.But when i try to edit my profile using userena profile edit option,i am facing an error just like that...

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

is this error raising , because i have added a new field(referral code) in my Myprofile model?? if it is ,then what should i do to adjust a new field(like referral_code) with userena?

zogo
  • 495
  • 3
  • 10
  • 24

1 Answers1

0

Just a guess, you can have referral_code as a property field. instead of a 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)

Include referral_code field in your admin. You can check by using print (self.instance.referral_code)

Ria
  • 225
  • 1
  • 7
  • 18
  • raising the error **global name 'generate_verification_code' is not defined** while trying to signup or registering a new user Ria – zogo Apr 26 '14 at 11:12