J'ai 2 tables, simpleDB_all et simpleDB_some. La table "all" a une entrée pour chaque élément que je veux, tandis que la table "some" a des entrées seulement pour certains éléments qui ont besoin d'informations supplémentaires. Les modèles de Django pour ceux-ci sont:Left Rejoindre un champ OneToOne dans Django
class all(models.Model):
name = models.CharField(max_length=40)
important_info = models.CharField(max_length=40)
class some(models.Model):
all_key = models.OneToOneField(all)
extra_info = models.CharField(max_length=40)
J'aimerais créer une vue qui montre tous les éléments de « tout » avec les informations supplémentaires si elle existe dans « certains ». Depuis que je suis sur un 1-1 terrain, je peux le faire avec presque succès:
allitems = all.objects.all()
for item in allitems:
print item.name, item.important_info, item.some.extra_info
mais quand je reçois à l'élément qui ne dispose pas d'entrée correspondante dans le tableau « certains » I obtenez une exception DoesNotExist.
Idéalement, je ferais cette boucle à l'intérieur d'un modèle, il est donc impossible de l'entourer d'une clause «essayer». Des pensées?
je peux obtenir l'effet désiré directement dans SQL en utilisant une requête comme ceci:
SELECT all.name, all.important_info, some.extra_info
FROM all LEFT JOIN some ON all.id = some.all_key_id;
Mais je préfère ne pas utiliser SQL brut.
Cela peut fonctionner. Merci pour la suggestion ... quand j'arrive à nouveau à cette partie de l'application et que je vérifie silencieusement la forme "fait la bonne chose" je reviendrai et marquerai ceci comme réponse. Merci. – jamida