首页 > 解决方案 > django.db.utils.OperationalError:没有这样的表:characters_race

问题描述

我尝试运行python manage.py migrate,甚至python manage.py makemigrations characters仍然出现错误,我尝试搜索该表的所有文件甚至类似的文件,但我什么也没找到,我什至尝试删除“db.sqlite3”和“ ptcache ”并尝试再次行,仍然是同样的错误。这是回溯:

    File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\base.py", line 85, in wrapped

    res = handle_func(*args, **kwargs)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\commands\migrate.py", line 75, in handle
    self.check(databases=[database])
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\base.py", line 392, in check
    all_issues = checks.run_checks(
    errors.extend(model.check(**kwargs))
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\base.py", line 1264, in check
    *cls._check_fields(**kwargs),
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\base.py", line 1343, in _check_fields
    errors.extend(field.check(**kwargs))
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\fields\related.py", line 836, in check
    *super().check(**kwargs),
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\fields\related.py", line 482, in check
    *super().check(**kwargs),
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\fields\related.py", line 100, in check
    *super().check(**kwargs),
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\fields\__init__.py", line 200, in check
    *self._check_choices(),
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\fields\__init__.py", line 245, in _check_choices
    if not self.choices:
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\query.py", line 291, in __bool__
    self._fetch_all()
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\query.py", line 1308, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\query.py", line 53, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\models\sql\compiler.py", line 1156, in execute_sql
    cursor.execute(sql, params)


File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\backends\utils.py", line 98, in execute
    return super().execute(sql, params)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\backends\utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\User\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\db\backends\sqlite3\base.py", line 413, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: characters_race

这是models.py:

  class Race(models.Model):
    name = models.CharField(max_length=200)
    attack = models.IntegerField()
    deffence = models.IntegerField()
    intelligence = models.IntegerField()
    agility = models.IntegerField()
    wisdom = models.IntegerField()
    charisma = models.IntegerField()

    def publish(self):
        self.save()

    def __str__(self):
        return self.name

class Role(models.Model):
    name = models.CharField(max_length=200)
    attack = models.IntegerField()
    deffence = models.IntegerField()
    intelligence = models.IntegerField()
    agility = models.IntegerField()
    wisdom = models.IntegerField()
    charisma = models.IntegerField()

    def publish(self):
        self.save()

    def __str__(self):
        return self.name


class Character(models.Model):
   raceList = Race.objects.all()
   roleList = Role.objects.all()

   user=models.ForeignKey(User,related_name='characters',on_delete=models.CASCADE)
   name=models.CharField(max_length=200)
   description=models.TextField()
   level=models.PositiveIntegerField(default=1)
   race = models.ForeignKey(Race,choices = raceList,on_delete=models.CASCADE)
   role = models.ForeignKey(Role,choices = roleList,on_delete=models.CASCADE)
  @property
   def attack(self):
       return self.race.attack+self.role.attack

   @property
   def deffence(self):
       return self.race.deffence+self.role.deffence

   @property
   def intelligence(self):
       return self.race.intelligence+self.role.intelligence

   @property
   def agility(self):
       return self.race.agility+self.role.agility

   @property
   def wisdom(self):
       return self.race.wisdom+self.role.wisdom

   @property
   def charisma(self):
       return self.race.charisma+self.role.charisma

   @property
   def maxHp(self):
       return (self.deffence/2)+(self.level*5)+20

   @property
   def maxMana(self):
       return (intelligence*0.75)+(level*5)+15

  
   def publish(self):
       self.save()

   def get_absolute_url(self):
       return reverse("characters:character_detail",kwargs={'pk':self.pk})

   def __str__(self):
       return self.name

这是 Views.py:

 class CreateCharacterView(LoginRequiredMixin,CreateView):
    login_url = '/login/'
    redirect_field_name = 'characters/character_detail.html'

    form_class = CharacterForm

    model = Character

class CreateRaceView(LoginRequiredMixin,CreateView):
    login_url = '/login/'
    redirect_field_name = 'characters/race_detail.html'

    form_class = RaceForm

    model = Race

class CreateRoleView(LoginRequiredMixin,CreateView):
    login_url = '/login/'
    redirect_field_name = 'characters/roles_detail.html'

    form_class = RolesForm

    model = Role

class CharacterListView(LoginRequiredMixin,ListView):
    login_url = '/login/'
    redirect_field_name = 'characters/characters_list.html'

    model = Character

    def get_queryset(self):
        return Post.objects.order_by('name')

class RacesListView(ListView):
    model = Race

    def get_queryset(self):
        return Race.objects.order_by('name')

class RolesListView(ListView):
    model = Role

    def get_queryset(self):
        return Role.objects.order_by('name')

class CharacterDetailView(DetailView):
    model = Character

class RacesDetailView(DetailView):
    model = Race

class RoleDetailView(DetailView):
    model = Role


class CharacterUpdateView(LoginRequiredMixin,UpdateView):
    login_url = '/login/'
    redirect_field_name = 'characters/character_detail.html'

    form_class = CharacterForm

    model = Character

class RaceUpdateView(LoginRequiredMixin,UpdateView):
    login_url = '/login/'
    redirect_field_name = 'characters/race_detail.html'

    form_class = RaceForm

    model = Race

class RoleUpdateView(LoginRequiredMixin,UpdateView):
    login_url = '/login/'
    redirect_field_name = 'characters/role_detail.html'

    form_class = RolesForm

    model = Role

class CharacterDeleteView(LoginRequiredMixin,DeleteView):
    model = Character
    success_url = reverse_lazy('characters:characters_list')

class RaceDeleteView(LoginRequiredMixin,DeleteView):
    model = Race
    success_url = reverse_lazy('characters:races_list')

class RoleDeleteView(LoginRequiredMixin,DeleteView):
    model = Role
    success_url = reverse_lazy('characters:roles_list')

#######################################
## Functions that require a pk match ##
#######################################

@login_required
def character_publish(request, pk):
    character = get_object_or_404(Character, pk=pk)
    character.publish()
    return redirect('characters:character_detail', pk=pk)

@login_required
def race_publish(request, pk):
    race = get_object_or_404(Race, pk=pk)
    race.publish()
    return redirect('characters:race_detail', pk=pk)

@login_required
def role_publish(request, pk):
    role = get_object_or_404(Role, pk=pk)
    role.publish()
    return redirect('characters:role_detail', pk=pk)

如您所见,我没有任何看起来像它搜索的表的东西,我认为我错过了一些东西,但我不知道是什么,我尝试了回溯但没有运气,因为我看不到任何回溯到我的代码

标签: django

解决方案


推荐阅读