Błąd ['“0,0” value must be a decimal number.'] przy migracji Django

Błąd ['“0,0” value must be a decimal number.'] przy migracji Django
PW
  • Rejestracja:ponad rok
  • Ostatnio:23 dni
  • Postów:13
1

Witam,

robię kurs z Django,napotkałem problem jak w temacie. Mam co prawda pole o rodzaju DecimalField ale nawet zakomentowanie tej linijki nie poprawia błędu.

Ktoś coś? Pomocy proszę.

Kopiuj
models.py

from django.db import models

class Film(models.Model):

    tytul = models.CharField(max_length=64, null=True, blank=False,default=str,unique=True)
    type = models.CharField(max_length=64,default='Thriller')  
    rok = models.PositiveSmallIntegerField(default=2000)
    opis = models.TextField(default='Opis filmu')

    email = models.EmailField(default='email@op.pl')
    premiera = models.DateField(auto_now=True, null=True,blank=True) 
    imdb_rating = models.DecimalField(max_digits=4, decimal_places=2,null=True)

    plakat = models.ImageField(null=True,blank=True)


    def __str__(self):
        return f" {self.tytul} + ' (' + {str(self.rok)} + ')"

    def tutul_z_rokiem(self):
        return '{} ({})'.format(self.tytul,self.rok)

Cały komunikat o błędzie w konsoli:

Kopiuj
(venv) PS C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY> py manage.py migrate       
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, filmy_aplikacja, sessions
Running migrations:
  Applying filmy_aplikacja.0003_remove_film_date_film_imdb_rating_film_opis_and_more...Traceback (most recent call last):
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\models\fields\__init__.py", line 1811, in to_python   
    decimal_value = decimal.Decimal(value)
                    ^^^^^^^^^^^^^^^^^^^^^^
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\manage.py", line 22, in <module>
    main()
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_c
ommand_line
    utility.execute()
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\core\management\__init__.py", line 436, in execute       
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\core\management\base.py", line 413, in run_from_argv     
    self.execute(*args, **cmd_options)
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\core\management\base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\core\management\base.py", line 107, in wrapper
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\core\management\commands\migrate.py", line 357, in handle
    post_migrate_state = executor.migrate(
                         ^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\migrations\executor.py", line 135, in migrate
    state = self._migrate_all_forwards(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\migrations\executor.py", line 167, in _migrate_all_for
wards
    state = self.apply_migration(
            ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\migrations\executor.py", line 255, in apply_migration 
    state = migration.apply(state, schema_editor)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\migrations\migration.py", line 132, in apply
    operation.database_forwards(
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\migrations\operations\fields.py", line 110, in databas
e_forwards
    schema_editor.add_field(
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\backends\sqlite3\schema.py", line 316, in add_field   
    self._remake_table(model, create_field=field)
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\backends\sqlite3\schema.py", line 145, in _remake_tabl
e
    self.effective_default(create_field)
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\backends\base\schema.py", line 483, in effective_defau
lt
    return field.get_db_prep_save(self._effective_default(field), self.connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\models\fields\__init__.py", line 1830, in get_db_prep_
save
    self.to_python(value), self.max_digits, self.decimal_places
    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\TOMULENIEK\PycharmProjects\DJANGO PODSTAWY\venv\Lib\site-packages\django\db\models\fields\__init__.py", line 1813, in to_python   
    raise exceptions.ValidationError(
django.core.exceptions.ValidationError: ['“0,0” value must be a decimal number.']
edytowany 1x, ostatnio: Riddle
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Laska, z Polski
  • Postów:10081
4

Nie jestem do końca pewien, ale strzelałbym że chodzi o separator dziesiętny. Spróbuj z "0.0" (zamiast "0,0").

PW
  • Rejestracja:ponad rok
  • Ostatnio:23 dni
  • Postów:13
1

Z tym,że ja już w kodzie nie mam default = 0,0 (miałem wcześniej,jak testowałem wartości tej zmiennej).
I właśnie jak to napisałeś, to trafiłem na linijkę z konsoli błędów,że nie może przejść 3 migracji a ja mam ich już 12! więc liczyłem na to,że nowe migracje pokryją te błędy zrobione wcześniej ale chyba tak się nie stało bo oto zawartość 3 migracji:

Kopiuj
```
# Generated by Django 5.1.5 on 2025-01-25 12:06

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('filmy_aplikacja', '0002_film_type_alter_film_tytul'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='film',
            name='date',
        ),
        migrations.AddField(
            model_name='film',
            name='imdb_rating',
            field=models.DecimalField(decimal_places=1, default='0,0', max_digits=2),
        ),
        migrations.AddField(
            model_name='film',
            name='opis',
            field=models.TextField(default='Opis filmu'),
        ),
        migrations.AddField(
            model_name='film',
            name='plakat',
            field=models.ImageField(blank=True, height_field=100, null=True, upload_to='plakaty', width_field=100),
        ),
        migrations.AddField(
            model_name='film',
            name='premiera',
            field=models.DateField(auto_now=True, null=True),
        ),
    ]
```

W linijce 21 jest default=0,0 i poprawienie tego w starej migracji na 0.0 poprawia błąd. Dziękuję! dobra intuicja no i wiedza!

Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:2 minuty
  • Postów:2098
0

to standardowa pułapka dla naszego regionu :)


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.