Конвертировать djongo EmbeddedModelField - PullRequest
0 голосов
/ 20 октября 2019

Привет, я новичок в среде Python Django и ORM. У меня есть проблема, которую я не могу решить.

У меня есть коллекция в Монго под названием users

Выглядит примерно так:

{
  _id:
  username:
  email:
  password:
  user_type:
}

Я хочу иметь 2 типапользователь (1 = клиент, 2 = поставщик), оба могут войти в приложение. После некоторых исследований я обнаружил, что все пользователи должны храниться в одной коллекции. Поэтому я решил использовать user_type и два дополнительных поля:

{
  customer_data: // object that will be filled if user is customer
  supplier_data: // object that will be filled if user is supplier
}

Я следовал учебному пособию по адресу: Страница документации Djongo , но все равно получаю ту же ошибку:

Don't know how to convert the Django field user.User.supplier_data (<class 'djongo.models.fields.EmbeddedModelField'>)

Модель моего пользователя:

   class User(AbstractBaseUser):
      _id = models.ObjectIdField()
      password = models.CharField(max_length=128)
      # Other fields
      supplier_data = models.EmbeddedModelField(model_container=SupplierData, default={}, null=True)

Модель SupplierData: * модели 1019 *

class SupplierData(models.Model):
    phone = models.CharField(max_length=100)
    website = models.URLField()
    description = models.TextField()
    rating = models.DecimalField(default=0.0, decimal_places=1, max_digits=5)

    class Meta:
        abstract = True

из библиотеки djongo (из моделей импорта djongo)

Я мог бы использовать другие коллекции с заказчикоми данные о поставщике относительно сбора пользователей, но у поставщика будет больше вложенных объектов (обзоры, носители, местоположение), и у меня снова будет та же проблема в будущем.

...