2011-07-07 10 views
0

いくつかの体私はUSERPROFILEとStaff.staffは私の質問は、任意のエントリは、スタッフのテーブルに行わなければならない場合.1.Itは必須だろうということですDjangoの継承の質問

USERPROFILE継承する2つのクラスを持っている私に次のことを説明してくださいユーザープロファイルの権利の詳細を記入するには?

あなたはhttps://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritanceを見てみた場合は、自動的に1対1マッピングが作成されていることがわかります。このinheritence.Thanksに

class Profile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    created_date = models.DateTimeField(auto_now_add=True) 
    emp_first_name = models.CharField(max_length=255) 
    emp_last_name = models.CharField(max_length=255) 
    gender = models.CharField(max_length=2, choices = GENDER_CHOICES, null=False) 
    date_of_birth = models.DateField(blank=True,null=True) 
    address1 = models.CharField(max_length=255) 
    city = models.CharField(max_length=48) 
    state = models.CharField(max_length=48) 
    country = models.CharField(max_length=48) 
    email_id = models.EmailField(blank=True) 


    class Staff(UserProfile): 
    role = models.ManyToManyField(Role) 
    designation = models.CharField(max_length=48, blank=True, null=True) 
    education = models.CharField(max_length=255, blank=True, null=True) 
+0

覚えておくべき事は 'Profile'「を推進」するジャンゴにはメカニズムがありませんということです'Staff'に継承を使用する場合は' Staff'に、 'Staff'が' Profile'に 'OneToOneField'を、継承しない場合、既存の' Profile'を使用した 'Staff'を作成することができます。 –

答えて

3

を説明してください。したがって、UserProfileのエントリが保存され、StaffのエントリはUserProfileエントリを指すOneToOneフィールドと共に保存されます。

しかし、スタッフにすべてのフィールドを継承させたい場合は、UserProfileにabstract = Trueを設定することをおすすめします。これは、スタッフがすべてのこれらのフィールドを継承することを意味するが、( https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classesで説明したように)あなたは、それ自体でのUserProfileを作成することはできません

class Meta: 
     abstract = True 
+0

ありがとう............................ – Rajeev