Как я могу создать объект с Djongo, если у него есть EmbeddedFields? - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть две модели, использующие Djongo:

from djongo import models


class Sector(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

    class Meta:
        abstract = True


class Collaborator(models.Model):
    name = models.CharField(max_length=100)
    birth = models.DateField()
    salary = models.IntegerField()
    status = models.BooleanField()
    register_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)
    sector = models.EmbeddedModelField(
                model_container=Sector,
            )
    objects = models.DjongoManager()

    def __str__(self):
        return self.name

Я хочу выполнить это:

Collaborator.objects.create(
    name='bla',
    # all normal fields...
    sector=None, # obviously I need something but None here, but what?
)

Но я получаю эту ошибку:

ValueError: Значение: Ни один не должен быть экземпляром Model: class 'django.db.models.base.Model'

Я не могу создать экземпляр Сектора, поскольку он абстрактный.

ЕслиЯ удаляю абстрактное свойство из сектора, оно прекрасно работает, а затем передает его функции create, но идея состоит в том, чтобы сохранить ее таким образом, поскольку на сайте Djongo говорится:

Если вы не планируете использовать встроенную модель в качестве автономной модели (что означает, что она всегда будет встроена в родительскую модель), вы должны добавить класс Meta и abstract = True. Таким образом, Djongo никогда не зарегистрирует это. модель как фактическая модель.

Рекомендуется определять встроенные модели как абстрактные модели, и это настоятельно рекомендуется.

Как мне это исправить?

...