while making a blog, my models.py:
from django.db import models
class Post(models.Model):
title=models.CharField(max_length=200,blank=True)
author=models.ForeignKey('auth.user',on_delete=models.CASCADE,)
image=models.ImageField(upload_to='media/',blank=True)
content=models.CharField(max_length=1000,blank=True)
date=models.DateTimeField(auto_now_add=False, editable=False)
tag=models.CharField(max_length=100,blank=True)
slug=models.CharField(max_length=200,blank=True)
def __str__(self):
return self.title
when i run python manage.py makemigrations, datefield is created in database:
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('blog', '0013_auto_20191124_1448'),
]
operations = [
migrations.AlterField(
model_name='post',
name='date',
field=models.DateTimeField(editable=False),
),
]
but when i try to run python manage.py migrate, it shows the following error:
(Django-k7xSBAPV) C:\Myfiles\python\Django\myblog\blog_project>python manage.py
makemigrations
No changes detected
(Django-k7xSBAPV) C:\.....\blog_project>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0004_post_date...Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\core\management\__init__.py", line 381, in
execute_from_command_line
utility.execute()
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\core\management\__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\core\management\base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\core\management\base.py", line 364, in execute
output = self.handle(*args, **options)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\core\management\base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\core\management\commands\migrate.py", line 234, in handle
fake_initial=fake_initial,
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\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\ronyrocks\.virtualenvs\Django-k7xSBAPV\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\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\migrations\executor.py", line 245, in apply_migration
state = migration.apply(state, schema_editor)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\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\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\migrations\operations\fields.py", line 112, in database_forwards field,
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\backends\sqlite3\schema.py", line 327, in add_field
self._remake_table(model, create_field=field)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\backends\sqlite3\schema.py", line 188, in _reremake_table
self.effective_default(create_field)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\backends\base\schema.py", line 233, in effectctive_default
return field.get_db_prep_save(self._effective_default(field), self.connection)
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\backends\base\schema.py", line 212, in _effecective_default
default = field.get_default()
File "C:\Users\ronyrocks\.virtualenvs\Django-k7xSBAPV\lib\site-
packages\django\db\models\fields\__init__.py", line 801, in get_t_default
return self._get_default()
TypeError: timezone() missing required argument 'offset' (pos 1)
but without date in models.py, everything was working fine. i tried to use dafault=timezone.now() along with from django.utils.timezone import * but it's showing different warning.
please give me some suggestions. i am doing this in django2.2.
i think i solved the problem. i am sharing it if anyone wish to look through.... and i have polished the code...
from django.db import models
from django.utils import timezone
class Post(models.Model):
title=models.CharField(max_length=200)
author=models.ForeignKey(
'auth.User',on_delete=models.CASCADE,)
image=models.ImageField(upload_to='media/',blank=True)
content=models.CharField(max_length=1000)
date=models.DateTimeField(default=timezone.now)
tag=models.CharField(max_length=100)
slug=models.CharField(max_length=200)
def __str__(self):
return self.title
def publish_time(self):
publication=timezone.now()
self.save()
My main issue was i forget to migrate when i first created the app. i am not sure this is the main reason or not. but it worked smoothly.besides i have decided to use ckeditor, but it poses another problem which it just accepts picture from the link. that's why i prefer more ImageField....
any way this model.py file ran at first attempt while starting a clean app.
thanx again
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments