Django многие ко многим с двумя моделями?

У меня есть две модели Students, University. Используя ее, студент может подать заявку на курс в университете, и требования таковы: когда студент подает заявку на курс в университете, мне нужно создать приложение (планирую создать отдельную модель для приложения)

К этому приложению могут получить доступ как студент, так и университет. Целью обеспечения доступа к приложению для обоих является то, что есть много данных, которые будут обработаны позже!

Как создать общую таблицу приложения - чтобы оба могли получить доступ или неэффективно создавать отдельную таблицу?

Пожалуйста, подскажите, как с этим справиться!

Option1: Can a many to many be combined with Student and University to create a application model 

Option2: Add manytomany field to students model itself with University as foreign key ?

У меня есть записи более 1 миллиона, поэтому я немного обеспокоен эффективностью! Какой вариант лучше для двусторонней связи

Лучшим способом справиться с этим будет промежуточная модель Application, содержащая внешние ключи к Student и University.

Наличие обоих внешних ключей в модели Application гарантирует отношения "многие ко многим" между студентом и университетом.

Решение будет выглядеть следующим образом:

class Student(models.Model):
    email = models.EmailField(max_length=255)


class University(models.Model):
    name = models.TextField()

class Application(models.Model):
    applicant = models.ForeignKey(
        "Student",
        on_delete=models.CASCADE
    )
    university = models.ForeignKey(
        "University",
        on_delete=models.CASCADE
    )
Option1: Can a many to many be combined with Student and University to create an application model 
На

Вариант 1 ответил Ren. Для объяснения вы можете посмотреть Особенности и библиотеки Django Видео Мичиганского университета

Вариант 2: Это не будет соответствовать вашим требованиям. Действительно, Django автоматически сгенерирует таблицу для управления отношениями "многие-ко-многим". Вам нужно вручную указать промежуточную таблицу, вы можете использовать опцию through, чтобы указать модель Django, которая представляет промежуточную таблицу, которую вы хотите использовать. т.е. Вариант 1

См. ManyToManyField официальный документ.

Вернуться на верх