J'ai deux modèles qui sont utilisés avec une base de données que je ne contrôle pas. Les deux sont définis avec managed = False
. Le premier modèle a un champ qui est une clé étrangère au deuxième modèle, mais il est implémenté comme CharField
, pas comme ForeignKey
.Django: Utiliser select_related sans un champ ForeignKey
Est-il possible d'utiliser select_related
sur le premier modèle pour accéder aux propriétés du second modèle key'd?
Voici un exemple:
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?
Pourquoi ne pas utiliser 'ForeignKey'? – Ivan
Je pensais que je ne serais pas en mesure d'utiliser un ForeignKey parce que la base de données réelle que ce modèle utilise est hors de mon contrôle (d'où 'managed = False'). Cependant, même si cette relation n'est pas implémentée comme une vraie clé étrangère dans cette base de données, l'utilisation d'une ForeignKey a semblé fonctionner ici et je suis maintenant capable d'utiliser 'select_related'. – Joseph