Нужно ли мне импортировать класс в отдельный файл?
Итак, я создал 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