Python: как смоделировать вызов, который принимает аргумент списка и утверждает первый элемент списка arg

Использовать ManyToManyField

class Student(models.Model):
    name = models.CharField(...)
    attendance = models.ManyToMany(Subject)    

class Subject(models.Model):
    subject = models.CharField(...)

Это будет так

id   |    student_id   |  subjects_id
-----------------------------------------
1    |    1            |  10
2    |    4            |  11
3    |    4            |  19
4    |    5            |  10
...
~1000

У каждого ученика будет несколько объектов ... в то время как несколько предметов могут быть у моих учеников

Obs .: Обычно я хотел бы назвать мои отношения ManyToMany именем второй таблицы во множественном числе ... так что предметы

Использование:

all_students = Student.objects.all()
all_subjects = Subject.objects.all()
all_subjects_from_student = Student.objects.get(id=1).attendance.all()

Как я могу отметить посещаемость конкретного ученика для конкретного предмета?

particular_student = Student.objects.get(id=1) # When 1 is the student ID
particular_subject_of_student = particular_student.filter(id=1) # When 1 is the subject ID

https://docs.djangoproject.com/en/2.0/topics/db/ Примеры / many_to_many /

EDIT Вы можете сделать это тоже без использования ManyToMany, если вам нужно какое-либо новое поле в Attendance

class Student(models.Model):
    name = models.CharField(...)

class Subject(models.Model):
    subject = models.CharField(...)

class Attendance(Student, Subject):
    att = models.IntegerField()
    subject = models.ForeignKey(Subject)
    student = models.ForeignKey(Student)
    ... # You can add more fields if you like

. Возьмем один такой вопрос, как ваш: django доступ к сырым многим во многие созданные поля таблицы

0
задан smbaker 18 January 2019 в 23:02
поделиться