ImportError: не удается импортировать имя «подделка» из частично инициализированного модуля «подделка» (скорее всего, из-за циклического импорта)

#python #django

Вопрос:

    1. из django.db импортируются модели
         # Create your models here. 
       
    2. классная викторина(модели.Модель):
           quiz_title = models.CharField(max_length=300)
          num_questions = models.IntegerField(default=0)
      
          def __str__(self):
              return self.quiz_title
      
      
      class Question(models.Model):
          quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
          question_text = models.TextField(max_length=10000)
          question_num = models.IntegerField(default=0)
          answer = models.CharField(max_length=300)
          explanation = models.TextField(max_length=5000)
      
          def __str__(self):
              return str(self.question_num)
      
      
      
      
      
      class Choice(models.Model):
          question = models.ForeignKey(Question, on_delete=models.CASCADE)
          choice_text = models.CharField(max_length=300)
          correct = models.BooleanField(default=False)
      
          def __str__(self):
              return str(self.choice_text)
       

    из случайного импорта randint
    2. от подделки импорт подделки
    3. из викторины.модели импортируют викторину, Вопрос, Выбор

    1. импорт случайных
    2. импорт django
    3. импорт ОС
    4. os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘schoolauthquiz.настройки’) django.setup()
    5. fakegen = подделка()
    6. имя = [‘HTML’, ‘CSS’, ‘JavaScript’, ‘MySQL’,’Python’, ‘jQuery’, ‘Bootstrap4′,’Математика’]
    7. fake_num_questions = fakegen.randint(1, 10)
    8. деф add_quiz():
    9. q = Quiz.objects.get_or_create(
    10. quiz_title=случайный выбор(имя), num_questions=fake_num_questions)[0]
    11. q.сохранить()
    12. возврат q
    13. определение численности населения(N=10): для входа в диапазон(N): викторина = add_quiz()
           fake_question_text = fakegen.question_text()
          # fake_question_num = fakegen.question_num()
          fake_answer = fakegen.answer()
          fake_explanation = fakegen.explanation()
      
          # fake_question = fakegen.question()
          fake_choice_text = fakegen.choice_text()
          fake_correct = fakegen.correct()
      
          Q = Question.objects.get_or_create(quiz=quiz, question_text=fake_question_text,
                                             question_num=fake_num_questions, answer=fake_answer,
       

      объяснение=fake_explanation)[0]

           ch = Choice.objects.get_or_create(
              question=Q, correct=fake_correct, choice_text=fake_choice_text)[0]
       

      если имя == ‘основной‘:
      печать(«заполняющий скрипт!»)
      вопрос о населении(10)
      печать(«заполнение вопроса о населении удовлетворяет!»)

      `

Комментарии:

1. Пожалуйста, ознакомьтесь с кодом, который вы опубликовали, возможно, он неполный.

Ответ №1:

Я сталкивался с той же проблемой раньше. Что вам нужно будет сделать, так это добавить blank=True и null=True``inside of each методы ForeignKey ().

Например:

 class Question(models.Model):

    """
    The Quiz models is defined as string.
    Since it is declared below this model.
    """
    quiz = models.ForeignKey('Quiz', on_delete=models.CASCADE, null=True, blank=True)
    ...


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE,  null=True, blank=True)
  ...
 

Имейте в виду, что первое сообщение будет иметь нулевое соединение, но оно может быть обновлено позже.

Комментарии:

1. сэр фейкер модуль, использующий программу, прав или где находится, помогите мне

2. Как использовать модуль фейкера? в наследовании моделей? я знаю только одну модель, как написать несколько моделей с наследованием, вот почему я спрашиваю

3. Как заполнить эту модель с помощью модуля faker или любого другого модуля любые изменения в модели

4. абстрактное = Правда ?