Модель не определена с ManyToManyField - PullRequest
0 голосов
/ 29 августа 2018

У меня проблема с миграцией модели для Django 2.1. Я создал эти две модели класса:

class PostModel(models.Model):
    post_title = models.CharField(max_length=70)
    post_short_description = models.CharField(max_length=200)
    post_contents = models.TextField()
    post_publishing_date = models.DateTimeField(auto_now=False, auto_now_add=True)
    post_keyconcept = models.ManyToManyField(KeyConceptModel)
    post_slug = models.SlugField(unique="True")
    post_highlighted = models.BooleanField(default=False)

    def __str__(self):
        return self.post_title

class KeyConceptModel(models.Model):
    concept_text = models.CharField(max_length=50)

    def __str__(self):
        return self.concept_text

Когда я пытаюсь запустить makemigrations , консоль возвращает:

NameError: name 'KeyConceptModel' is not defined

Ошибка указывает на строку post_keyconcept . Если я прокомментирую все KeyConceptModel и строку post_keyconcept , миграции пройдут успешно.

Я не знаю, что не так, я новичок в мире Django и Python ...

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы определили KeyConceptModel после , когда вы пытаетесь использовать его в PostModel. Вы можете исправить это двумя способами: передать KeyConceptModel в виде строки или определить KeyConceptModel перед его использованием в PostModel.

0 голосов
/ 29 августа 2018

Класс PostModel должен быть вверху, а класс KeyConceptModel внизу:

class KeyConceptModel(models.Model):
    concept_text = models.CharField(max_length=50)
    def __str__(self):
        return self.concept_text

class PostModel(models.Model):
    post_title = models.CharField(max_length=70)
    post_short_description = models.CharField(max_length=200)
    post_contents = models.TextField()
    post_publishing_date = models.DateTimeField(auto_now=False, auto_now_add=True)
    post_keyconcept = models.ManyToManyField(KeyConceptModel)
    post_slug = models.SlugField(unique="True")
    post_highlighted = models.BooleanField(default=False)
    def __str__(self):
        return self.post_title

Вот интересная ссылка: https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_many/

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