TypeError: _prepare_related_fields_for_save() missing 1 required positional argument: 'self'

models.py

Когда я хочу создать тестовые данные, я получаю ошибку TypeError: _prepare_related_fields_for_save() missing 1 required positional argument: 'self' и я не знаю, как решить эту проблему. Кто-нибудь может мне помочь?

from django.utils import timezone



class Worker(models.Model):
    fullname = models.CharField(max_length=255, verbose_name='ФИО')
    position = models.CharField(max_length=155, verbose_name='Должность')
    start_date = models.DateField(default=timezone.now, verbose_name='Дата создания')
    salary = models.CharField(max_length=20, verbose_name='Зарплата')
    parent = models.ForeignKey('self', on_delete=models.DO_NOTHING, null=True, blank=True, related_name='childrens', verbose_name='Начальник')


    def save(self, *args, **kwargs):
        max_indent = 3
        lvl = self.parent.id if self.parent else 0
        if lvl < max_indent:
            super().save(*args, **kwargs)
        else:
            raise ValueError("Максимальная вложенность: 3")


    class Meta:
        verbose_name = 'Сотрудник'

    def __str__(self):
        return self.fullname

test_data.py

import random
import string
from django.core.management.base import BaseCommand
from tree_app.models import Worker


class Command(BaseCommand):
    help = 'Filling with data'

    def handle(self, *args, **options):
        worker = [Worker for i in range(1,30)]
        for i in worker:
            i.fullname = ''.join([random.choice(string.ascii_lowercase) for i in range(16)])
            Worker.objects.bulk_create(worker)   #this is line 14
        self.stdout.write(self.style.SUCCESS('Successfully created'))

ERROR

docker-compose exec web ./manage.py test_data
Traceback (most recent call last):
  File "/app/./manage.py", line 22, in <module>
    main()
  File "/app/./manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 425, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 373, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 417, in execute
    output = self.handle(*args, **options)
  File "/app/tree_app/management/commands/test_data.py", line 14, in handle
    Worker.objects.bulk_create(worker)
  File "/usr/local/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 503, in bulk_create
    self._prepare_for_bulk_create(objs)
  File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 465, in _prepare_for_bulk_create
    obj._prepare_related_fields_for_save(operation_name='bulk_create')
TypeError: _prepare_related_fields_for_save() missing 1 required positional argument: 'self'
Вернуться на верх