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'