2017-12-15 15 views
0

私は以下のカスタムユーザーモデルを持っています。それは私の施設ディメンションテーブルに関連したいフィールドコッドを持っています。外部キーのモデルとの関連

class User(AbstractBaseUser, PermissionsMixin): 



    email = models.EmailField(unique=True) 
    username = models.CharField(max_length=7, unique=True) 
    formattedusername = models.CharField(max_length=11, unique=True, primary_key = True) 
    first_name = models.CharField(max_length=40) 
    last_name = models.CharField(max_length=140) 
    date_joined = models.DateTimeField(default=timezone.now) 
    is_active = models.BooleanField(default=True) 
    is_staff = models.BooleanField(default=False) 
    is_cfo = models.BooleanField(default=False) 
    facility = models.CharField(max_length=140) 
    officename = models.CharField(max_length=100) 
    jobdescription = models.CharField(max_length=140) 
    positioncode = models.CharField(max_length = 100) 
    positiondescription = models.CharField(max_length=140) 
    coid = models.CharField(max_length=5) 
    streetaddress = models.CharField(max_length=140) 
    title = models.CharField(max_length=100) 



    USERNAME_FIELD = 'username' 

    class Meta: 
     app_label = 'accounts' 
     db_table = "user" 

    def save(self, *args, **kwargs): 
     self.formattedusername = '{domain}\{username}'.format(
      domain='HCA', username=self.username) 
     super(User, self).save(*args, **kwargs); 

    def get_short_name(self): 
     return self.username 

私のFacility_Dimensionテーブルに外部キーを定義しましたが、フォーマットされたユーザー名で関係を作成しようとしています。

class FacilityDimension(models.Model): 
    unit_num = models.CharField(db_column='Unit_Num', max_length=5, blank=True, null=True) # Field name made lowercase. 
    company_code = models.CharField(db_column='Company_Code', max_length=1, blank=True, null=True) # Field name made lowercase. 
    coid = models.OneToOneField(settings.AUTH_USER_MODEL,db_column='Coid',primary_key=True, serialize=False, max_length=5) # Field name made lowercase. 
    coid_name = models.CharField(db_column='COID_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    c_level = models.CharField(db_column='C_Level', max_length=6, blank=True, null=True) # Field name made lowercase. 
    company_name = models.CharField(db_column='Company_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    s_level = models.CharField(db_column='S_Level', max_length=6, blank=True, null=True) # Field name made lowercase. 
    sector_name = models.CharField(db_column='Sector_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    b_level = models.CharField(db_column='B_Level', max_length=6, blank=True, null=True) # Field name made lowercase. 
    group_name = models.CharField(db_column='Group_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    r_level = models.CharField(db_column='R_Level', max_length=6, blank=True, null=True) # Field name made lowercase. 
    division_name = models.CharField(db_column='Division_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    d_level = models.CharField(db_column='D_Level', max_length=6, blank=True, null=True) # Field name made lowercase. 
    market_name = models.CharField(db_column='Market_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    f_level = models.CharField(db_column='F_Level', max_length=6, blank=True, null=True) # Field name made lowercase. 
    cons_facility_name = models.CharField(db_column='Cons_Facility_Name', max_length=50, blank=True, null=True) # Field name made lowercase. 
    lob_code = models.CharField(db_column='LOB_Code', max_length=3, blank=True, null=True) # Field name made lowercase. 
    lob_name = models.CharField(db_column='LOB_Name', max_length=20, blank=True, null=True) # Field name made lowercase. 
    sub_lob_code = models.CharField(db_column='Sub_LOB_Code', max_length=3, blank=True, null=True) # Field name made lowercase. 
    sub_lob_name = models.CharField(db_column='Sub_LOB_Name', max_length=20, blank=True, null=True) # Field name made lowercase. 
    state_code = models.CharField(db_column='State_Code', max_length=2, blank=True, null=True) # Field name made lowercase. 
    pas_id_current = models.CharField(db_column='PAS_ID_Current', max_length=8, blank=True, null=True) # Field name made lowercase. 
    pas_current_name = models.CharField(db_column='PAS_Current_Name', max_length=40, blank=True, null=True) # Field name made lowercase. 
    pas_id_future = models.CharField(db_column='PAS_ID_Future', max_length=8, blank=True, null=True) # Field name made lowercase. 
    pas_future_name = models.CharField(db_column='PAS_Future_Name', max_length=40, blank=True, null=True) # Field name made lowercase. 
    summary_7_member_ind = models.CharField(db_column='Summary_7_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_8_member_ind = models.CharField(db_column='Summary_8_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_phys_svc_member_ind = models.CharField(db_column='Summary_Phys_Svc_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_asd_member_ind = models.CharField(db_column='Summary_ASD_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_imaging_member_ind = models.CharField(db_column='Summary_Imaging_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_oncology_member_ind = models.CharField(db_column='Summary_Oncology_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_cath_lab_member_ind = models.CharField(db_column='Summary_Cath_Lab_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_intl_member_ind = models.CharField(db_column='Summary_Intl_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    summary_other_member_ind = models.CharField(db_column='Summary_Other_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    pas_coid = models.CharField(db_column='PAS_COID', max_length=5, blank=True, null=True) # Field name made lowercase. 
    pas_status = models.CharField(db_column='PAS_Status', max_length=1, blank=True, null=True) # Field name made lowercase. 
    company_code_operations = models.CharField(db_column='Company_Code_Operations', max_length=3, blank=True, null=True) # Field name made lowercase. 
    osg_pas_ind = models.CharField(db_column='OSG_PAS_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    abs_facility_member_ind = models.CharField(db_column='ABS_Facility_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    abl_facility_member_ind = models.CharField(db_column='ABL_Facility_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    intl_pmis_member_ind = models.CharField(db_column='INTL_PMIS_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    hsc_member_ind = models.CharField(db_column='HSC_Member_Ind', max_length=1, blank=True, null=True) # Field name made lowercase. 
    loaddate = models.DateTimeField(db_column='LoadDate', blank=True, null=True) # Field name made lowercase. 

    class Meta: 
     managed = False 
     db_table = 'Facility_Dimension' 

すべての私の他のテーブルは、このモデルの関係を除いて、私が欲しいものであるformattedusernameで私のUserテーブルに関連しています。

しようとすると、次のForeignKeyを使用しているとき、私は次のエラーを取得する私は私のユーザーモデルでのForeignKeyの関係を追加しようとしましたが、それは前FacilityDimensionにロードしますので、それは私のFacilityDimensionテーブル

を認識しません。私のUserモデルでmakemigrationsを実行します。

NameError: name 'FacilityDimension' is not defined 

coid = models.ForeignKey(FacilityDimension,max_length=5) 

答えて

1
次のいずれかの方法でこの問題を解決することができ

  1. IMPO RT関連モデル以前のUserクラスモデル(円形輸入が存在する場合、主に使用)ForeignKey

  2. Stringfyクラス名

    models.ForeignKey('myapp.FacilityDimension', max_length=5)

+0

モデルを先にインポートした場合、ユーザーとの関係は存在せず、同じボートに残されます。 Stringy Classの名前を調べます。 – student101

+0

グーグル文字列クラスdjangoは情報を提供していません、あなたは例を挙げることができますか? – student101

+1

Django ['ForeignKey'](https://docs.djangoproject.com/ja/2.0/ref/models/fields/#foreignkey)ドキュメントは、文字列の使い方を示しています。 'models.ForeignKey(Model)'、 'models.ForeignKey( 'MyModel')'( 'MyModel'が同じアプリケーションにある場合)、' models.ForeignKey( 'myapp.MyModel') 'を使用できます。 – Alasdair

0

私は中= 'COID' related_nameを使用することがわかっ私のモデル。これは問題を解決しました。

関連する問題