访问django配置文件中的对象父属性

时间:2012-07-31 17:36:25

标签: django django-models django-profiles

我正在使用具有不同类型的配置文件的django配置文件。

我的公司简介模型类似于:

from django.db import models
from django.contrib.auth.models import User
from accounts.models import UserProfile
from jobs.models import City
from proj import settings
from django.core.mail import send_mail

class Company(UserProfile):
    name=models.CharField(max_length=50)
    short_description=models.CharField(max_length=255)
    tags=models.CharField(max_length=50)
    profile_url=models.URLField()
    company_established=models.DateField(null=True,blank=True)
    contact_person=models.CharField(max_length=100)
    phone=models.CharField(max_length=50)
    address=models.CharField(max_length=200)
    city=models.ForeignKey(City,default=True)

    def send_activation_email(self):
        self.set_activation_key(self.username)
        email_subject = 'Your  '+settings.SITE_NAME+' account confirmation'
        email_body = """Hello, %s, and thanks for signing up for an                                                                                            
example.com account!\n\nTo activate your account, click this link within 48                                                                                       
hours:\n\nhttp://"""+settings.SITE_URL+"/accounts/activate/%s""" % (self.username,self.activation_key)
        send_mail(email_subject,
                  email_body,
                  'acccounts@site.com',
                  [self.email])

这里我从UserProfile继承公司,在发送激活电子邮件中,我试图使用父类user和userprofile的属性和方法。它的直接父级是userprofile,而用户与userprofile有onetoone关系。所以我试着调用userpofile中定义的self.activation_key并调用self.username,它是用户类/表的属性,并在self.username上获取错误。

所以好像我以错误的方式调用self.username,所以如何访问self.username?任何细节都会有所帮助和赞赏。

1 个答案:

答案 0 :(得分:0)

Company继承自UserProfile,但正如您所说UserProfile不会从User继承 - 它与之有一个OneToOne关系。所以没有self.username这样的事情 - 只有从selfUser.username的关系。我猜这个关系是通过一个名为user的字段,在这种情况下你需要self.user.username