Как создать ссылку в модели Django, которая указывает на другую модель? - PullRequest
2 голосов
/ 01 марта 2020

Здравствуйте, у меня есть 2 модели:

class Classroom(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
    price = models.FloatField()

    def __str__(self):
        return self.name


class Student(models.Model):
    name = models.CharField(max_length=255)
    surname = models.CharField(max_length=255)
    age = models.IntegerField()
    classroom = <---- How to link to classroom here

    def __str__(self):
        return str(self.name) + " - " + str(self.surname)

Как создать ссылку, чтобы я мог сохранить класс, к которому принадлежит каждый ученик? Большое спасибо!

1 Ответ

2 голосов
/ 01 марта 2020

Это очень просто, в вашем примере вы можете просто использовать метод models.ForeingKey (), это сработает, потому что этот класс может быть связан со многими учениками. Но в случае, если у вас есть одна модель, связанная только с одной другой моделью, вы будете использовать модели .OneToOne ().

Вам также нужно будет ввести аргумент "on_delete", это говорит django, что делать с этим атрибутом, если другая модель удаляется из базы данных. Чаще всего используется "models.CASCADE", которая также удаляет модель, но вы можете использовать другие, такие как (PROTECT, SET_NULL, SET_DEFAULT и т. Д. c)

LINK для официального документация на всякий случай.

class Student(models.Model):
    name = models.CharField(max_length=255)
    surname = models.CharField(max_length=255)
    age = models.IntegerField()
    classroom = models.ForeignKey(Item, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.name) + " - " + str(self.surname)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...