TypeError: аргумент типа PosixPath не повторяется

Sep 29 2020

пожалуйста, помогите мне получить эту ошибку из python manage.py makemigrations

Миграции для 'post': post / migrations / 0022_auto_20200929_1749.py - Удалить категорию поля из сообщения - Удалить тег поля из сообщения Traceback (последний вызов последний): файл "manage.py", строка 22, в main () File "manage .py ", строка 18, в основном файле execute_from_command_line (sys.argv) Файл" /usr/lib/python3.8/site-packages/django/core/management/ init .py ", строка 381, в служебной программе execute_from_command_line.execute ( ) Файл "/usr/lib/python3.8/site-packages/django/core/management/ init.py ", строка 375, при выполнении self.fetch_command (подкоманда) .run_from_argv (self.argv) Файл" /usr/lib/python3.8/site-packages/django/core/management/base.py ", строка 336 в файле run_from_argv connections.close_all () "/usr/lib/python3.8/site-packages/django/db/utils.py", строка 224, в файле close_all connection.close () "/ usr / lib / python3 .8 / site-packages / django / db / backends / sqlite3 / base.py ", строка 248, в конце, если не self. Is_in_memory_db (): File" /usr/lib/python3.8/site-packages/django/ db / backends / sqlite3 / base.py ", строка 367, в is_in_memory_db return self.creation.is_in_memory_db (self.settings_dict ['NAME']) Файл" /usr/lib/python3.8/site-packages/django/db /backends/sqlite3/creation.py ", строка 12, в is_in_memory_db, возвращает имя_базы_данных == ': memory:' или 'mode = memory' в имени_базы_данных TypeError: аргумент типа 'PosixPath' не повторяется

models.py из моделей импорта django.db

> # Create your models here. from django.db import models from django.utils import timezone
> 
> 
> class Post(models.Model):
>     author = models.ForeignKey('auth.User', on_delete=models.CASCADE ,null=True)
>     title = models.CharField(max_length=200,null=True)
>     description=models.TextField(default='a')
>     text = models.TextField(null=True)
>     Img = models.ImageField(upload_to='images/',null =True)
>     UserImg= models.ImageField(upload_to='images/user/',null =True)
> 
>     created_date = models.DateTimeField(
>             default=timezone.now)
>     published_date = models.DateTimeField(
>             blank=True, null=True)
> 
>     def publish(self):
>         self.published_date = timezone.now()
>         self.save()
> 
>     def __str__(self):
>         return self.title
>     def approved_comments(self):
>      return self.comments.filter(approved_comment=True)
> 
> class Comment(models.Model):
>     post = models.ForeignKey('post.Post', on_delete=models.CASCADE, related_name='comments')
>     name = models.CharField(max_length=200)
>     text = models.TextField()
>     email=models.EmailField(null=True)
>     created_date = models.DateTimeField(default=timezone.now)
>     approved_comment = models.BooleanField(default=False)
> 
>     def approve(self):
>         self.approved_comment = True
>         self.save()
> 
>     def __str__(self):
>         return self.text

Ответы

AzyCrw4282 Sep 30 2020 at 00:17

Ошибка несколько искажена, предлагая удалить fieldнесуществующий (или, возможно, существующий ранее) объект , но он не должен быть причиной ошибки при выполнении миграции.

Миграции для 'post': post / migrations / 0022_auto_20200929_1749.py - Удалить категорию поля из сообщения - Удалить тег поля из сообщения Traceback

Если я прав, возможно, вы используете Django 3.1, который переместил псевдо-параметр BASE_DIR на использование pathlib.Pathвместо простой строки. Поддержка этого требует добавления str()в некоторые места, например, в драйвер sqlite.

Если вы посмотрите на определение BASE_DIR в вашем файле настроек, используется ли он Path ()? В этом случае вы можете использовать Str () вокруг его использования в вашем БАЗЕ установка, то есть str(BASE_DIR / "something.sqlite").

Подробнее читайте здесь - используйте Pathlib в файле настроек Django