Значение: "" должно быть экземпляром <class 'dict'> в django, djongo

Я использую Django и соединяюсь с базой данных mongodb с помощью djongo. Мои требования к базе данных таковы, что мне необходимо использовать встроенное поле в одной из коллекций. При добавлении любой записи в Django Admin я получаю ошибку предварительного просмотра -

У меня есть 2 модели, City, содержащая 3 поля, и Address, содержащая 2 поля объект города и пинкод. Следовательно, город является встроенным полем в модели Address.

При добавлении этой записи через django-admin появляется сообщение об ошибке, и запись не сохраняется в базе данных.
Пожалуйста, исправьте ошибку ниже -> Значение: gwalior-MP-India должно быть экземпляром <класса 'dict'>

An entry in address table looks like -   

{
  "city":
  {
    "city":"gwalior",
    "state":"MP",
    "country":"India"
  },
  
  "pincode":"9999"
}

P.S. - Я не смог прикрепить скриншот панели django-admin, так как получил ошибку при размещении этого вопроса -> Failed to upload image; an error occurred on the server.

Вот фрагменты кода и версии установленных пакетов.

models.py

class City(models.Model):
    _id = models.ObjectIdField()
    city = models.CharField(db_column='city', max_length=255, null=True, blank=True)
    state = models.CharField(db_column='state', max_length=255, null=True, blank=True)
    country = models.CharField(db_column='country', max_length=255, null=True, blank=True)

    def __str__(self):
        return self.city + '-' + self.state + '-' + self.country

    class Meta:
        db_table = 'CityDetails'


class Address(models.Model):
    _id = models.ObjectIdField()
    # city = models.ForeignKey(City, on_delete=models.CASCADE, db_column='city', null=True, blank=True)
    city = models.EmbeddedField(model_container=City, null=True, blank=True)
    pincode = models.CharField(db_column='pincode', max_length=255, null=True, blank=True)

    class Meta:
        db_table = 'Address'

admin.py

from django.contrib import admin
from .models import *
    
class CityAdmin(admin.ModelAdmin):
    list_display = ['city', 'state', 'country']


class AddressAdmin(admin.ModelAdmin):
    list_display = ['city', 'pincode']

# Register your models here.
admin.site.register(City, CityAdmin)
admin.site.register(Address, AddressAdmin)    

В settings.py, часть настроек базы данных -

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'newDjangoDashboardProjectDb',
    }
}   

Мой requirements.txt файл-

>> tzdata==2022.5   
>> pytz==2022.4  
>> Django==4.1.2  
>> pymongo==3.12.3  
>> djongo==1.3.6  
>> wheel==0.37.1  
>> sqlparse==0.2.4  
>> mongodb==4.2.21
Вернуться на верх