TypeError: l'argument de type 'PosixPath' n'est pas iterabl
Aidez-moi à obtenir cette erreur de python manage.py makemigrations
Migrations pour 'post': post / migrations / 0022_auto_20200929_1749.py - Supprimer la catégorie de champ de la publication - Supprimer la balise de champ de la publication Traceback (dernier appel en dernier): Fichier "manage.py", ligne 22, dans main () File "manage .py ", ligne 18, dans le fichier principal execute_from_command_line (sys.argv)" /usr/lib/python3.8/site-packages/django/core/management/ init .py ", ligne 381, dans execute_from_command_line utility.execute ( ) Fichier "/usr/lib/python3.8/site-packages/django/core/management/ init.py ", ligne 375, dans exécutez self.fetch_command (sous-commande) .run_from_argv (self.argv) File" /usr/lib/python3.8/site-packages/django/core/management/base.py ", ligne 336 , dans run_from_argv connections.close_all () File "/usr/lib/python3.8/site-packages/django/db/utils.py", ligne 224, dans close_all connection.close () File "/ usr / lib / python3 .8 / site-packages / django / db / backends / sqlite3 / base.py ", ligne 248, dans close sinon self.is_in_memory_db (): File" /usr/lib/python3.8/site-packages/django/ db / backends / sqlite3 / base.py ", ligne 367, dans is_in_memory_db return self.creation.is_in_memory_db (self.settings_dict ['NAME']) Fichier" /usr/lib/python3.8/site-packages/django/db /backends/sqlite3/creation.py ", ligne 12, dans is_in_memory_db return database_name == ': memory:' ou 'mode = memory' dans database_name TypeError: l'argument de type 'PosixPath' n'est pas iterabl
models.py à partir de modèles d'importation 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
Réponses
L'erreur est quelque peu déformée, lui disant de supprimer un fieldqui n'existe pas (ou peut avoir existé auparavant) mais ne devrait pas être la cause de l'erreur lors des migrations.
Migrations pour 'post': post / migrations / 0022_auto_20200929_1749.py - Supprimer la catégorie de champ de l'article - Supprimer la balise de champ de l'article Traceback
Si j'ai raison, vous utilisez peut-être Django 3.1, qui a déplacé le pseudo-paramètre BASE_DIR à utiliser pathlib.Pathplutôt qu'une simple chaîne. Le support pour cela nécessitait l'ajout str()à certains endroits comme le pilote sqlite.
Si vous regardez la définition de BASE_DIR dans votre fichier de paramètres, utilise-t-il un Path ()? Si c'est le cas, vous pouvez utiliser str () autour de son utilisation dans votre paramètre DATABASES, ie str(BASE_DIR / "something.sqlite").
Lisez ici pour en savoir plus - Utilisez Pathlib dans votre fichier de paramètres Django