Unable to save Embedded field data in django admin
RashmiR31 opened this issue · 6 comments
One line description of the issue
Unable to save Embedded field data in django admin
Python script
Create your models here.
#models.py
from django.db import models
from djongo import models
from django import forms
class Book(models.Model):
title=models.CharField(max_length=200)
author=models.CharField(max_length=200)
class Meta:
abstract = True
class BookForm(forms.ModelForm):
class Meta:
model=Book
fields = ('title','author')
class Post(models.Model):
heading = models.CharField(max_length=200)
content = models.EmbeddedField(
model_container = Book,
model_form_class = BookForm
)
objects = models.DjongoManager()
#admin.py
from django.contrib import admin
from .models import *
admin.site.register(Post)
#forms.py
from django import forms
from .models import *
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = 'all'
Traceback
Environment:Request Method: POST
Request URL: http://127.0.0.1:8000/admin/myapp/post/add/
Django Version: 3.1.3
Python Version: 3.8.10
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Users\Admin\test\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\Admin\test\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\contrib\admin\options.py", line 614, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\contrib\admin\sites.py", line 233, in inner
return view(request, *args, **kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\contrib\admin\options.py", line 1653, in add_view
return self.changeform_view(request, None, form_url, extra_context)
File "C:\Users\Admin\test\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\Admin\test\lib\site-packages\django\contrib\admin\options.py", line 1534, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "C:\Users\Admin\test\lib\site-packages\django\contrib\admin\options.py", line 1573, in _changeform_view
form_validated = form.is_valid()
File "C:\Users\Admin\test\lib\site-packages\django\forms\forms.py", line 177, in is_valid
return self.is_bound and not self.errors
File "C:\Users\Admin\test\lib\site-packages\django\forms\forms.py", line 172, in errors
self.full_clean()
File "C:\Users\Admin\test\lib\site-packages\django\forms\forms.py", line 376, in full_clean
self._post_clean()
File "C:\Users\Admin\test\lib\site-packages\django\forms\models.py", line 405, in post_clean
self.instance.full_clean(exclude=exclude, validate_unique=False)
File "C:\Users\Admin\test\lib\site-packages\django\db\models\base.py", line 1209, in full_clean
self.clean_fields(exclude=exclude)
File "C:\Users\Admin\test\lib\site-packages\django\db\models\base.py", line 1251, in clean_fields
setattr(self, f.attname, f.clean(raw_value, self))
File "C:\Users\Admin\test\lib\site-packages\django\db\models\fields_init.py", line 650, in clean
value = self.to_python(value)
File "C:\Users\Admin\test\lib\site-packages\djongo\models\fields.py", line 259, in to_python
f'Value: {value} must be an instance of {self.base_type}')
File "C:\Users\Admin\test\lib\site-packages\django\db\models\base.py", line 522, in str
return '%s object (%s)' % (self.class.name, self.pk)
File "C:\Users\Admin\test\lib\site-packages\django\db\models\base.py", line 573, in _get_pk_val
return getattr(self, meta.pk.attname)
Exception Type: AttributeError at /admin/myapp/post/add/
Exception Value: 'NoneType' object has no attribute 'attname'
Same issue. I added str to my abstract classes and now it is a validation error. Django admin says that my values must be an instance of <class 'list'> to my models. ArrayField and an instance of <class 'dict'> to my models.EmbeddedField
yeah same issue with me, I work with Django 3.8 and Djongo 1.3.3
@nesdis dear I am also facing the same issue. It's really urgent.
Indeed this issue persists, really messing up my day.
Any update on this?