1

さまざまな種類のプロファイルを持つ 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 から Company を継承し、アクティブ化メールの送信で、親クラス user および userprofile のプロパティとメソッドを使用しようとしています。その直接の親は userprofile ですが、user は userprofile と 1 対 1 の関係にあります。そこでself.activation_key、userpofile で定義され、ユーザー クラス/テーブルのプロパティである self.username と呼ばれるものを呼び出そうとしましたが、self.username でエラーが発生しました。

self.username を間違った方法で呼び出しているようですが、どうすれば self.username にアクセスできますか? どんな詳細でも役に立ち、感謝します。

4

1 に答える 1

0

Companyから継承しUserProfileますが、あなたが言うように、からUserProfile継承しませんUser-それとOneToOneの関係があります。したがって、 からへself.usernameの関係があるだけというようなものはありません。その関係は というフィールドを経由していると推測しますが、その場合は が必要です。selfUser.usernameuserself.user.username

于 2012-07-31T20:41:42.637 に答える