2017-02-15 3 views
0

現在、私は "アカウント"モデルと "アカウントコメント"モデルを持っています - 私は実際にデータベースのスキームを制御できません。私は既存のDBの周りにラッパーを書いています。Djangoの外部キーは、モデルの別のフィールドに基づいて自動的に埋められます

AccountCommentsモデルの下には、「データ」というフィールドがあります。 AccountCommentsが実際にどこにあるのですか、私は基本的に、AccountIDを保持するAccountにAccountCommentsフィールドを再設計して追加することなく、基本的にAccountモデルに外部キーを作成しようとしています。

class Account(models.Model): 
    AccountID = models.AutoField(editable=False, db_column='AccountID', verbose_name='ID', 
          primary_key=True) 
    acctno = models.IntegerField(editable=True, unique=True, db_column='ACCTNO', verbose_name='Acct #', blank=True, 
          null=True) # Field name made lowercase. 
    accountComments = models.ForeignKey('accountComments',to_field='accountID',db_column='Data') 

    def __str__(self): 
     return str(self.acctno) 

    class Meta: 
     managed = False 
     db_table = 'Account' 


class accountComments(models.Model): 
    accountCommentID = models.AutoField(db_column='AccountCommentID', primary_key=True) # Field name made lowercase. 
    accountID = models.IntegerField(db_column='AccountID') # Field name made lowercase. 
    EntryUserID = models.IntegerField(db_column='EntryUserID') # Field name made lowercase. 
    EntryStamp = models.DateTimeField(db_column='EntryStamp',) # Field name made lowercase. 
    Data = models.TextField(db_column='Data') # Field name made lowercase. 
    guid = models.CharField(db_column='guid', max_length=255) # Field name made lowercase. 
    class Meta: 
     managed = False 
     db_table = 'AccountComment' 

は最終的に、アカウントのモデルにaccountCommentsがaccountComments.accountIDに検索を行うには「アカウントID」を使用して、「データ」をバック提供したいです。

私は

def accountComments(self): 
    return str(accountComment.objects.get(accountID = self.AccountID).Data) 

を使用することができることを知っているが、私はそれはDjangoの管理者と仕事をしたいので、私はそれがモデルの一部として統合する必要があります。

誰かが私を正しい方向に向けることができたらどうもありがとう。

+0

あなたがFK間違った方法ラウンドを得たHavne't? 1つのアカウントに複数のコメントを関連付けることはできません。その逆もありませんか? – schwobaseggl

+0

私はすべてのコメントが1つの巨大なテキスト文字列である2000 ASP.netから移行しています。そうではありません。 –

+0

最終的に、私はAccountで 'accountComment'と呼ばれる別のフィールドを作成し、既存のすべてのフィールドのaccountIDを 'accountComment'にコピーし、外部キーを使用してAccountCommentモデル__str__で逆戻りしてデータを返したとします。 外部キーの参照がそのモデルの別のフィールドに基づいていることを定義する方法が必要なような気がします。 –

答えて

0

あなたは外来キーで多すぎることを試みています。 Djangoの外部キーに続いて、モデルインスタンスから特定のフィールドではなく、モデルインスタンスを返す必要があります。

db_columnは、IDを格納するテーブルAccountの列でなければなりません。その後

accountComments = models.ForeignKey('accountComments',to_field='accountID',db_column='AccountID') 

、あなたがどうなる特定のaccount例えばDataを、取得する:

account.accountComments.Data 
+0

うーん、私はとてもばかげている..ええ、私はdb_columnを同じことを2回定義することはできません!私はこれを本当に素早く試みます。 –

関連する問題