I wrote a small test application for the company's list of employees.
I plaing in django console and I saw that this bulk_create() method create company object in db, but return [<Company: Company object (None)>] and I can not refresh_from_db() this object because it rise departments.models.Company.DoesNotExist: Company matching query does not exist.
-- I wrote the custom migration to create the initial data and got problem with python manage.py migrate
Traceback (most recent call last):
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 71, in execute
return self.cursor.execute(query, args)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/MySQLdb/cursors.py", line 255, in execute
self.errorhandler(self, exc, value)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/MySQLdb/cursors.py", line 252, in execute
res = self._query(query)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/MySQLdb/cursors.py", line 378, in _query
db.query(q)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/MySQLdb/connections.py", line 280, in query
_mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (1048, "Column 'company_id' cannot be null")
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/core/management/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/core/management/base.py", line 353, in execute
output = self.handle(*args, **options)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 203, in handle
fake_initial=fake_initial,
File "/home/mykola/.virtualenvs/employees/lib/python3.5/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 "/home/mykola/.virtualenvs/employees/lib/python3.5/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 "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
state = migration.apply(state, schema_editor)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/migrations/migration.py", line 121, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
self.code(from_state.apps, schema_editor)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django_print_sql/print_sql.py", line 64, in wrapped
return func(*fargs, **fkwargs)
File "/home/mykola/projects/company/departments/migrations/0002_initial_creation_data.py", line 36, in create_objects
) for index in range(1, NUMBER)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/models/query.py", line 465, in bulk_create
ids = self._batched_insert(objs_without_pk, fields, batch_size)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/models/query.py", line 1155, in _batched_insert
self._insert(item, fields=fields, using=self.db)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/models/query.py", line 1136, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1289, in execute_sql
cursor.execute(sql, params)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/backends/utils.py", line 100, in execute
return super().execute(sql, params)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/backends/utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "/home/mykola/.virtualenvs/employees/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 76, in execute
raise utils.IntegrityError(*tuple(e.args))
django.db.utils.IntegrityError: (1048, "Column 'company_id' cannot be null")
my code of migration:
# Generated by Django 2.1.4 on 2019-01-01 14:37
import names
import random
from django.db import migrations
COMPANY_MODEL = "Company"
COMPANY_NAME = "Codecademy"
NUMBER = 11
def create_objects(apps, schema_editor):
company_model = apps.get_model("departments", COMPANY_MODEL)
company = company_model.objects.bulk_create([
company_model(name=COMPANY_NAME)
])[0]
department_model = apps.get_model("departments", "Department")
departments = department_model.objects.bulk_create([
department_model(
name="Department_{number}".format(
number=index
),
company=company
) for index in range(1, NUMBER)
])
employee_model = apps.get_model("departments", "Employee")
for department in departments:
employee_model.objects.bulk_create([
employee_model(
name=names.get_full_name(),
active=random.choice([True, False]),
department=department
) for _ in range(1, NUMBER)
])
def rollback_migration(apps, schema_editor):
company_model = apps.get_model("departments", COMPANY_MODEL)
company_model.objects.get(name=COMPANY_NAME).delete()
class Migration(migrations.Migration):
dependencies = [
('departments', '0001_initial'),
]
operations = [
migrations.RunPython(code=create_objects, reverse_code=rollback_migration)
]
The most important thing is that there is no problem with postgresql bd!!! Can anyone help me? It looks like I found a bug...
Django version 2.1
project code:
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/204312ad-d1ab-4c76-83f3-1f32e2e6dbde%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment