【发布时间】:2011-02-25 04:41:03
【问题描述】:
我有一个带有非 django 命名约定的旧数据库。如果我有以下(缩减)模型:
class Registration(models.Model):
projectId=models.IntegerField(primary_key=True)
class Application(models.Model):
applicationId=models.IntegerField(primary_key=True)
registration=models.ForeignKey(Registration,db_column='projectId')
ForeignKey 实例导致在 Application 上创建一个名为 registration_id 的属性,但这既不是该字段的正确名称(我有一个 hack 来解决这个问题),也无法使用在QuerySet。
有什么方法可以在 Application 模型上使用 ForeignKey 提供的 id 字段,而不必通过注册来引用它?
IE。我写了很多代码,例如:
Application.objects.get(projectId=1234)
并且不想写成:
Application.objects.get(registration__projectId=1234)
甚至
Application.objects.get(registration__pk=1234)
我有点惊讶:
Application.objects.get(registration_id=1234)
没用……
另请注意,我尝试将 id 列定义为字段以及适用于查询集的外键,但插入抱怨试图两次插入同一列:
class Application(models.Model):
...
projectId=models.IntegerField()
...
【问题讨论】:
标签: python django-models django-queryset