Нужно ли мне импортировать класс в отдельный файл?

Итак, я создал 2 класса моделей для моего приложения Django Rest и пытаюсь использовать внешний ключ для объединения обеих моделей.

Вот мой код:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True)



class Author(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)

Дело в том, что параметр Article в ForeignKey имеет предупреждение "Author" is not defined. Что я делаю не так? Разве классы в одном файле не должны быть уже "импортированы"?

Действительно ли мне нужно импортировать класс в тот же файл, в котором он используется?

Классы в файле .py загружаются в порядке, начиная с начала файла. Поэтому один из способов - изменить порядок объявления классов:

class Author(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)


class Article(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True)

Или модели django позволяют нам использовать psedonames (для сложных отношений нелегко упорядочить классы друг за другом):

class Article(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey('Author', on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True)


class Author(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)

Вы можете удалить from . import Author

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