Правильно ли определены модели в моих приложениях django? - PullRequest
0 голосов
/ 30 ноября 2018

Я изучаю Django и создал университетское приложение в проекте Django.Теперь я хочу знать, правильны ли отношения, определенные в моем models.py, или нет?

Я хочу 2 вещи здесь.Во-первых, я хочу знать, правильное отношение «многие ко многим», определенное здесь, или нет?Во-вторых, иностранный ключ между студентами и вузом правильный или нет?

from django.db import models


class University(models.Model):
    name = models.CharField(max_length=100)
    courses = models.CharField(max_length=500)

    def __str__(self): return self.name


class Student(models.Model):
    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
    name = models.CharField(max_length=200)
    roll_number = models.IntegerField(max_length=10)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    university = models.ForeignKey(University, primary_key=True)
    classes = models.ManyToManyField(Classes, blank=True, related_name="classes")

    def __str__(self): return self.name


class Classes(models.Model):
    name = models.CharField(max_length=100)
    attendee = models.CharField(max_length=100)
    student = models.ManyToManyField(Student, blank=True, related_name="students")

    def __str__(self): return self.name

1 Ответ

0 голосов
/ 01 декабря 2018

Нет необходимости указывать «многие ко многим» как в Classes, так и в Students.Django фактически установит эту связь для вас, и вы сможете звонить на занятия от студентов или наоборот.Посмотрите ниже в этой ссылке и прокрутите вниз до «наборов», это объясняет, о чем я говорю.

https://docs.djangoproject.com/en/2.1/ref/models/relations/

Вам нужно только много ко многим в одной модели, потому что вы можете получить доступ к взаимосвязив обе стороны.Например, если вы пытаетесь увидеть, каких учеников есть в классе, а многие из многих были в ученическом классе, вы бы запросили модель ученика и отфильтровали по классу.Если вы пытаетесь увидеть, какие классы есть у студента, вам нужно использовать запрос prefetch_related для Class_set.Я предлагаю вам прочитать о множествах, prefetch_related и select_related.Это важно в Джанго.Документы Django - очень хороший ресурс!

Удачи в интервью!

Извините за форматирование, я на своем телефоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...