Ошибка в DJango

yagaru

Новичок
Пользователь
Янв 16, 2021
14
1
3
Начал учиться работе с джанго. Решил добавить эмиграцию pub_date = models.DateTimeField(null=True, blank=True) Теперь при команде migrate выдает такую ошибку
Код:
C:\Users\HP\Desktop\Django\myfirst>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, articles, auth, contenttypes, sessions
Running migrations:
  Applying articles.0004_comment_pub_date_commment...Traceback (most recent call last):
  File "C:\Users\HP\Desktop\Django\myfirst\manage.py", line 22, in <module>
    main()
  File "C:\Users\HP\Desktop\Django\myfirst\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 85, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\commands\migrate.py", line 243, in handle
    post_migrate_state = executor.migrate(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\executor.py", line 227, in apply_migration
    state = migration.apply(state, schema_editor)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\operations\fields.py", line 104, in database_forwards
    schema_editor.add_field(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\sqlite3\schema.py", line 328, in add_field
    self._remake_table(model, create_field=field)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\sqlite3\schema.py", line 189, in _remake_table
    self.effective_default(create_field)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\base\schema.py", line 303, in effective_default
    return field.get_db_prep_save(self._effective_default(field), self.connection)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 823, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1378, in get_db_prep_value
    value = self.get_prep_value(value)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1357, in get_prep_value
    value = super().get_prep_value(value)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1217, in get_prep_value
    return self.to_python(value)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1339, in to_python
    raise exceptions.ValidationError(
django.core.exceptions.ValidationError: ['“default_title” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.']
]
Все перепробовал)) ПРи попытке зайти в раздел admin/articles/comment на сайте, выдает ошибку
no such column: articles_comment.pub_date
Помогите пожалуйста
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Попробуйте указать значение по умолчанию для поля pub_date:
Python:
pub_date =  models.DateTimeField(default='2021-01-27 00:00', null=True, blank=True)
или чтобы дата добавлялась автоматически при создании комментария можно добавить параметр auto_now_add:
Python:
pub_date =  models.DateTimeField(auto_now_add=True)
Также ошибка может возникать если у вас в базе уже есть сохраненные комментарии (без поля pub_date).
В этом случае нужно либо указать значение по умолчанию для таких полей, либо удалить их из базы.
 
  • Мне нравится
Реакции: yagaru

yagaru

Новичок
Пользователь
Янв 16, 2021
14
1
3
Начал учиться работе с джанго. Решил добавить эмиграцию pub_date = models.DateTimeField(null=True, blank=True) Теперь при команде migrate выдает такую ошибку
Код:
C:\Users\HP\Desktop\Django\myfirst>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, articles, auth, contenttypes, sessions
Running migrations:
  Applying articles.0004_comment_pub_date_commment...Traceback (most recent call last):
  File "C:\Users\HP\Desktop\Django\myfirst\manage.py", line 22, in <module>
    main()
  File "C:\Users\HP\Desktop\Django\myfirst\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 85, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\commands\migrate.py", line 243, in handle
    post_migrate_state = executor.migrate(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\executor.py", line 227, in apply_migration
    state = migration.apply(state, schema_editor)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\operations\fields.py", line 104, in database_forwards
    schema_editor.add_field(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\sqlite3\schema.py", line 328, in add_field
    self._remake_table(model, create_field=field)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\sqlite3\schema.py", line 189, in _remake_table
    self.effective_default(create_field)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\base\schema.py", line 303, in effective_default
    return field.get_db_prep_save(self._effective_default(field), self.connection)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 823, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1378, in get_db_prep_value
    value = self.get_prep_value(value)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1357, in get_prep_value
    value = super().get_prep_value(value)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1217, in get_prep_value
    return self.to_python(value)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py", line 1339, in to_python
    raise exceptions.ValidationError(
django.core.exceptions.ValidationError: ['“default_title” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.']
]
Все перепробовал)) ПРи попытке зайти в раздел admin/articles/comment на сайте, выдает ошибку
no such column: articles_comment.pub_date
Помогите пожалуйста
Python:
import datetime as dt
from django.db import models
from django.utils import timezone

class Article(models.Model):
    article_title = models.CharField('Название статьи', max_length = 200)
    article_text = models.TextField('Введите текст статьи')
    pub_date =  models.DateTimeField('Дата публикации')

    def __str__(self):
        return self.article_title
 
    def was_published_recently(self):
        return self.pub_date >= (timezone.now() - dt.timedelta(days = 7))

    class Meta:
        verbose_name = 'Статья'
        verbose_name_plural = 'Статьи'

class Comment(models.Model):
    article = models.ForeignKey(Article, on_delete = models.CASCADE)
    author_name = models.CharField('Имя автора', max_length = 30)
    comment_text = models.CharField('Текст комментария', max_length = 200)
    pub_date =  models.DateTimeField(null=True, blank=True)

    def __str__(self):
        return self.author_name

    class Meta:
        verbose_name = 'Коментарий'
        verbose_name_plural = 'Коментарии'
models.py
 

yagaru

Новичок
Пользователь
Янв 16, 2021
14
1
3
Попробуйте указать значение по умолчанию для поля pub_date:
Python:
pub_date =  models.DateTimeField(default='2021-01-27 00:00', null=True, blank=True)
или чтобы дата добавлялась автоматически при создании комментария можно добавить параметр auto_now_add:
Python:
pub_date =  models.DateTimeField(auto_now_add=True)
Также ошибка может возникать если у вас в базе уже есть сохраненные комментарии (без поля pub_date).
В этом случае нужно либо указать значение по умолчанию для таких полей, либо удалить их из базы.
спасибо,огромное)
 

yagaru

Новичок
Пользователь
Янв 16, 2021
14
1
3
Попробуйте указать значение по умолчанию для поля pub_date:
Python:
pub_date =  models.DateTimeField(default='2021-01-27 00:00', null=True, blank=True)
или чтобы дата добавлялась автоматически при создании комментария можно добавить параметр auto_now_add:
Python:
pub_date =  models.DateTimeField(auto_now_add=True)
Также ошибка может возникать если у вас в базе уже есть сохраненные комментарии (без поля pub_date).
В этом случае нужно либо указать значение по умолчанию для таких полей, либо удалить их из базы.
а на чем можно писать фронтэнд для сайтов,написанных на python с джанго?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
а на чем можно писать фронтэнд для сайтов,написанных на python с джанго?
если использовать шаблоны - то html, css, js
если делать API (на чистом django или restframework`e) то подойдет любой фронтенд: чистый js, js-фреймворки (react, vue, angular и т. д.), мобильные приложения, десктопные приложения.
 

yagaru

Новичок
Пользователь
Янв 16, 2021
14
1
3
если использовать шаблоны - то html, css, js
если делать API (на чистом django или restframework`e) то подойдет любой фронтенд: чистый js, js-фреймворки (react, vue, angular и т. д.), мобильные приложения, десктопные приложения.
Как добавлять html шаблоны я знаю, а как добавить js/css?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Как добавлять html шаблоны я знаю, а как добавить js/css?
Вот ссылка на документацию: ссылка.
 

yagaru

Новичок
Пользователь
Янв 16, 2021
14
1
3
Попробуйте указать значение по умолчанию для поля pub_date:
Python:
pub_date =  models.DateTimeField(default='2021-01-27 00:00', null=True, blank=True)
или чтобы дата добавлялась автоматически при создании комментария можно добавить параметр auto_now_add:
Python:
pub_date =  models.DateTimeField(auto_now_add=True)
Также ошибка может возникать если у вас в базе уже есть сохраненные комментарии (без поля pub_date).
В этом случае нужно либо указать значение по умолчанию для таких полей, либо удалить их из базы.
а как удалить столбец?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
а как удалить столбец?
Какой столбец?
Если вам нужно удалить столбец в таблице в базе данных (sqlite), то можно сделать как советуют тут.
Если вы используйте sqlite с тестовыми данными - проще будет удалить базу и запустить миграции заново.
Если нужно просто поменять значения в каком-то столбце на определенное значение, то можно просто подключиться к базе скриптом (не через django) и заменить их с помощью sql-запроса.
 
  • Мне нравится
Реакции: yagaru

siarhei

Новичок
Пользователь
Янв 27, 2021
7
1
3
Я, не очень вникал в суть, но может так..?
Python:
    created_at = models.DateTimeField("Дата создания", auto_now_add=True)
    modified_at = models.DateTimeField("Дата изменения", auto_now=True)
 
  • Мне нравится
Реакции: yagaru

Форум IT Специалистов