J'ai 3 tables:Django requête ForeignKey Count() zéro
Camion avec les champs: id
, name
....
Menu avec les champs: id
, itemname
, id_foodtype
, id_truck
...
Foodtype avec les champs: id
, type
...
Je veux obtenir un résumé comme:
id name total
10 Alcoholic drink 0
5 Appetizer 11
Mon problème est de retour les résultats avec 0
éléments.
J'ai essayé une requête SQL comme ceci:
SELECT
ft.id, ft.name, COUNT(me.id) total
FROM
foodtype ft LEFT JOIN menu me
ON ft.id = me.id_foodtype
LEFT JOIN truck tr
ON tr.id = me.id_truck AND tr.id = 3
GROUP BY ft.id, ft.name
ORDER BY ft.name
ou une requête dans Django
Menu.objects.filter(id_truck=3).values("id_foodtype").annotate(cnt=Count("id_foodtype"))
Mais, ni affiche les résultats avec Zero
éléments.
Au moment de convertir cette requête en code Python
, toutes mes requêtes renvoient le résultat exact auquel je m'attendais. Comment puis-je retourner des résultats avec le Left Join
, y compris les foodtypes
avec zéro éléments du menu
?
c'est plus une question de sql-postgres que django –
J'ai édité votre question pour être plus facile à chercher, dans l'espoir que c'est acceptable. J'ai également édité ma réponse un peu. – hynekcer