modello:django di accesso a molti prima per molti campi della tabella creati
class Subjects (models.Model):
name = models.CharField(max_length=100)
places = models.CharField(max_length=100)
class Student (models.Model):
name = models.CharField(max_length=40)
lastname = models.CharField(max_length=80)
subjects = models.ManyToManyField(Subjects, blank=True)
Django crea appname_student_subjects quando uso modello di cui sopra.
tavolo appname_student_subjects guarda per esempio, in questo modo:
id | student_id | subjects_id
-----------------------------------------
1 | 1 | 10
2 | 4 | 11
3 | 4 | 19
4 | 5 | 10
...
~1000
Come posso accedere campo subjects_id e contare quante volte esiste subjects_id nella tabella qui sopra (e poi fare qualcosa con esso). Ad esempio: se il soggetto con ID 10 esiste due volte il modello visualizza 2. So che dovrei usare "len" con risultato ma non so come accedere al campo subject_id. Con le chiavi esterne che sto facendo in questo modo in un ciclo for:
results_all = Students.objects.filter(subject_id='10')
result = len(results_all)
e passare risultato al modello e visualizzarlo all'interno di un ciclo, ma non è una chiave esterna in modo che non funziona.
Ecco una nota su un piccolo dettaglio, che può risparmiare un po 'altro lettore po' di tempo, un giorno: 'Students.subjects.through' funziona, ma' Subjects.student_set.through' non funziona. Questo è del tutto comprensibile dal punto di vista del design, ma nella vita reale le persone dimenticano quale sia l'insieme correlato in primo luogo e non hanno idea di cosa stia dicendo il messaggio di errore. – AlanSE