django:外键显示

时间:2013-07-24 04:38:54

标签: django foreign-keys displayobject

我的模特:

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

为什么我必须再做一个查询才能获得该字段的值? 其他问题,也许是相关的:为什么我必须使用该对象来填充外键字段而不仅仅是一个整数?

1 个答案:

答案 0 :(得分: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!!!