Значение: "" должно быть экземпляром <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