0

私のモデル:

class ActsInformationModel(models.Model):
    name=models.CharField(max_length=50, unique=True)
    prelexRespProposId1=models.ForeignKey('RespProposModel', related_name='prelexRespProposId1', blank=True, null=True, default=None)

class RespProposModel(models.Model):
    respPropos=models.CharField(max_length=50, unique=True)

私の見解:

...
dataDic["prelexRespProposId1"]=RespProposModel.objects.get(respPropos=respPropos)
print dataDic["prelexRespProposId1"].id #display 1 -> OK
dataDic["name"]="test"
act=ActsInformationModel.objects.get(...)
act.__dict__.update(dataDic)
print act.name #displays test
print "act.prelexRespProposId1", act.prelexRespProposId1 #display None -> PB
act.prelexRespProposId1=RespProposModel.objects.get(id=dataDic["prelexRespProposId1"].id)
print "act.prelexRespProposId1.id", act.prelexRespProposId1 #display 1 -> OK

フィールドの値を取得するために別のクエリを実行する必要があるのはなぜですか? おそらく関連する他の質問: オブジェクトを使用して、整数だけでなく、外部キー フィールドを入力する必要があるのはなぜですか?

4

1 に答える 1

1

解決しました!

外部キーを作成するとき、django はフィールドを元の名前 + "_id" で保存します。したがって、私のフィールド「prelexRespProposId1」は実際には「prelexRespProposId1_id」という名前でした。コードを機能させるには、後者の名前を使用する必要がありました。

私のモデル:

class ActsInformationModel(models.Model):
    prelexRespProposId1=models.ForeignKey('RespProposModel', related_name='prelexRespProposId1', blank=True, null=True, default=None)

私の見解:

...
dataDic["prelexRespProposId1_id"]=RespProposModel.objects.get(respPropos=respPropos)
print dataDic["prelexRespProposId1_id"].id #display 1 -> OK
act=ActsInformationModel.objects.get(...)
act.__dict__.update(dataDic)
print "act.prelexRespProposId1_id", act.prelexRespProposId1_id #display 1 -> Solved!!!
于 2013-07-24T09:04:58.467 に答える