0

J'ai trois tables User, Users_clients et Credits. Je souhaite répertorier les tables des clients de l'utilisateur actuel avec leurs détails et leur crédit. Si un client est listé dans la table de crédit, alors le crédit devrait retourner 0 là où il devrait retourner la valeur du crédit.Requête de recherche inversée django dans trois tables

mon model.py est

class User_clients(models.Model): 
user = models.ForeignKey(User, related_name='myuser') 
client = models.ForeignKey(User, related_name='myclient') 

class Credits(models.Model): 
user = models.OneToOneField(User, on_delete=models.CASCADE) 
credit = models.IntegerField(null=True, default=0) 

mon views.py est

def clients(request): 
try: 
    data = User_clients.objects.order_by('-id').filter(user_id=request.user.id)[0:10] 
except User_clients.DoesNotExist: 
    data = None 
return render(request, "client_list.html",{'title':"Client List",'clients':data,'active':'myclients','open':'clients'}) 

Merci beaucoup à l'avance!

+0

Vous ne devriez pas utiliser 'User_clients', mais vous devez ajouter un champ à l'intérieur utilisateur:' = clients models.ManyToManyField ('User') ', alors, vous pourriez faire 'data = User.objects.get (id = request.user.id) .clients.all()' – Blusky

Répondre

0

mise à jour après votre commentaire:

from itertools import chain 
from django.db.models import F 


without_credit = User_clients.objects.filter(user=request.user, client__credits__is_null=True).annotate(credit=0) 
with_credit = User_clients.objects.filter(user=request.user, 
client__credits__is_null=False).annotate(credit=F("client__credits__credit")) 
data = chain(without_credit, with_credit) 
+0

Merci beaucoup M. Efkin mais cette requête renvoie le client qui a des crédits dans la table de crédit. Ici, je veux aller chercher tous les clients, que le client ait des crédits ou non. Disons. si la table de crédits de table de crédit est vide alors elle devrait renvoyer 0. – xyzwithashok

+0

désolé j'ai mal compris votre question, je suis en train de mettre à jour une réponse – efkin

+0

Beaucoup de merci M. Efkin, Est-il possible de faire une requête qui va chercher tous les clints dans mon arbre. ici nous allons chercher des clients qui sont créés par moi seulement. Par exemple, je suis un revendeur et je fais des clients qui peuvent être des revendeurs et des clients finaux. Alors maintenant je veux aller chercher tous les clients qui sont dans mon arbre. – xyzwithashok