2017-08-06 1 views
1

J'ai du mal à obtenir mes données de DB.Django: get() retourné plus d'un

Fondamentalement, un enseignant peut créer plus de class_room chaque class_room contient un title et il a plus de numéro de students.

models.py

class class_room(models.model): 
    user = models.ForeignKey(User,related_name = 'classroom') 
    title = models.charField(max_length=50) 
    students = models.ManyToManyField(User,related_name= 'commits',symmetrical=FAlSE) 

views.py

def index(request): 
    user = request.user 
    Total_class = class_room.objects.get(user = user) 
    students_list = Total_class.students.all() 
    class_name = Total_class.title.all() 
    return render(request,'trial/index.html,{'Total':Total_class ,'no':students_list, 'class_name ':class_name ) 

Quand je tente d'exécuter ce code. je reçois cette erreur get() retourné plus d'un

Puis j'ai enlevé get() bcoz l'utilisateur a plus de nombre de class_room donc je mis filtre() Après que je reçois « QuerySet'object n'a pas « étudiants » attribut

Toute aide appréciée :(

+0

Le problème est que vous avez deux objets 'class_room' avec le même' user'. C'est pourquoi 'get()' retourne deux objets. Vous devez prendre soin de cela, d'abord. – zaidfazil

Répondre

2

vous avez plusieurs objets pour le modèle class_room dans la base de données, avec le même user. Soit vous devez appliquer la uniqu à l'attribut user dans les modèles.

Ou, vous pouvez obtenir les étudiants attribut du premier objet dans la requête comme,

Total_class = class_room.objects.filter(user = user).first() 
students_list = Total_class.students.all() 

ou en utilisant l'index,

Total_class = class_room.objects.filter(user = user)[2] 
                #any element. 

EDIT

Conformément à la demande d'OP, je pense que le queryset requis serait,

student_list = User.objects.filter(class_room__user=request.user) 
+0

Salut zaidfazil J'ai essayé ur répondre il n'est pas résolu.Il lit seulement une classe.rest des classes ne sont pas à l'affiche. j'ai besoin total – Akash

+0

Avez-vous plusieurs salles de classe avec le même utilisateur ?? Et vous voulez la liste de tous les étudiants dans toutes ces salles? est-ce? – zaidfazil

+0

un utilisateur a plusieurs salles de classe et chaque class_room a un titre et plusieurs étudiants. Donc je veux afficher le titre et les étudiants correspondants. – Akash