TypeError: Argument vom Typ 'PosixPath' ist nicht iterabl
Bitte helfen Sie mir, diesen Fehler von Python Management.py Makemigrations zu bekommen
Migrationen für 'post': post / migrations / 0022_auto_20200929_1749.py - Feldkategorie aus post entfernen - Feld-Tag aus post entfernen Traceback (letzter Aufruf zuletzt): Datei "manage.py", Zeile 22, in main () Datei "verwalten .py ", Zeile 18, in der Hauptdatei execute_from_command_line (sys.argv)" /usr/lib/python3.8/site-packages/django/core/management/ init .py ", Zeile 381, in execute_from_command_line Utility.execute ( ) Datei "/usr/lib/python3.8/site-packages/django/core/management/ init.py ", Zeile 375, in execute self.fetch_command (Unterbefehl) .run_from_argv (self.argv) Datei" /usr/lib/python3.8/site-packages/django/core/management/base.py ", Zeile 336 , in der Datei run_from_argv connection.close_all () "/usr/lib/python3.8/site-packages/django/db/utils.py", Zeile 224, in der Datei close_all connection.close () "/ usr / lib / python3 .8 / site-packages / django / db / backends / sqlite3 / base.py ", Zeile 248, in enger, wenn nicht self.is_in_memory_db (): Datei" /usr/lib/python3.8/site-packages/django/ db / backends / sqlite3 / base.py ", Zeile 367, in is_in_memory_db return self.creation.is_in_memory_db (self.settings_dict ['NAME']) Datei" /usr/lib/python3.8/site-packages/django/db /backends/sqlite3/creation.py ", Zeile 12, in is_in_memory_db return database_name == ': memory:' oder 'mode = memory' in database_name TypeError: Argument vom Typ 'PosixPath' ist nicht iterabl
models.py aus django.db importiert Modelle
> # 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
Antworten
Der Fehler ist etwas falsch dargestellt und weist ihn an, einen Fehler zu löschen field, der nicht vorhanden ist (oder möglicherweise bereits vorhanden war), aber nicht die Ursache des Fehlers bei Migrationen sein sollte.
Migrationen für 'post': post / migrations / 0022_auto_20200929_1749.py - Feldkategorie aus Post entfernen - Feld-Tag aus Post-Traceback entfernen
Wenn ich richtig bin, verwenden Sie möglicherweise Django 3.1, wodurch die Pseudoeinstellung BASE_DIR pathlib.Pathanstelle einer einfachen Zeichenfolge verwendet wurde. Die Unterstützung hierfür musste str()an einigen Stellen wie dem SQLite-Treiber hinzugefügt werden .
Wenn Sie sich die Definition von BASE_DIR in Ihrer Einstellungsdatei ansehen, wird ein Pfad () verwendet? In diesem Fall können Sie str () für die Verwendung in Ihrer DATABASES-Einstellung verwenden, d str(BASE_DIR / "something.sqlite"). H.
Lesen Sie hier mehr - Verwenden Sie Pathlib in Ihrer Django-Einstellungsdatei