django polymorphi c Команда dumpdata не выполнена - django .db.utils.IntegrityError: Проблема с установкой светильников - PullRequest
0 голосов
/ 17 марта 2020

Я использую пакет

django-polymorphic==2.1.2 Django==2.2

При попытке выгрузить данные для тестирования происходит сбой с таким сообщением:

Error
Traceback (most recent call last):
  File "/home/federico/Repositories/APC/venv/lib/python3.6/site-packages/django/test/testcases.py", line 1131, in setUpClass
    call_command('loaddata', *cls.fixtures, **{'verbosity': 0, 'database': db_name})
  File "/home/federico/Repositories/APC/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 148, in call_command
    return command.execute(*args, **defaults)
  File "/home/federico/Repositories/APC/venv/lib/python3.6/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/home/federico/Repositories/APC/venv/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 72, in handle
    self.loaddata(fixture_labels)
  File "/home/federico/Repositories/APC/venv/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 122, in loaddata
    connection.check_constraints(table_names=table_names)
  File "/home/federico/Repositories/APC/venv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 318, in check_constraints
    bad_value, referenced_table_name, referenced_column_name
django.db.utils.IntegrityError: Problem installing fixtures: The row in table 'core_faultagv' with primary key '1' has an invalid foreign key: core_faultagv.fault_ptr_id contains a value '1' that does not have a corresponding value in core_fault.id.

Я попытался использовать "--natural-foreign" и "--natural-primary" в качестве аргументов для dumpdata manage.py, но все равно не получилось.

Это мои модели:

class Fault(PolymorphicModel):
    active = models.BooleanField(default=False)
    equipment = models.CharField(choices=EquipmentChoices.choices(), max_length=10)
    fault_text = models.CharField(max_length=255)
    start_time = models.DateTimeField(auto_now=True)

    def get_vehicle_id(self):
        return None


class FaultAGV(Fault):
    error_code = models.IntegerField()
    vehicle_id = models.IntegerField()

    def get_vehicle_id(self):
        return self.vehicle_id


class FaultPLC(Fault):
    bit = models.IntegerField()
    index = models.IntegerField()

Любое предложение?

################# EDIT #################

Поскольку я не получаю ответов ... В итоге я переключился на пакет django-model-utils. Он делает то, что мне нужно для Django с использованием InheritanceManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...