【发布时间】:2015-10-22 19:43:06
【问题描述】:
我有两个模型用于我无法控制的数据库。两者都设置为managed = False。第一个模型有一个字段,它是第二个模型的外键,但它被实现为CharField,而不是ForeignKey。
是否可以在第一个模型上使用select_related 来访问密钥的第二个模型的属性?
这是一个例子:
class Foo(models.Model):
class Meta:
managed = False
fieldone = models.CharField(max_length=10)
myfk = models.CharField(max_length=20) # In practice, this points to Bar.localkey
class Bar(models.Model):
class Meta:
managed = False
localkey = models.CharField(max_length=20)
someotherattribute = models.CharField(max_length=100)
Foo.objects.all().select_related('Bar') # I know this won't work, but is there something that will?
【问题讨论】:
-
为什么不能使用
ForeignKey? -
我认为我无法使用 ForeignKey,因为该模型使用的实际数据库超出了我的控制范围(因此
managed=False)。但是,即使这种关系在该数据库中没有作为真正的外键实现,但在此处使用 ForeignKey 似乎确实有效,我现在可以使用select_related。
标签: django django-models django-orm