djongo icon indicating copy to clipboard operation
djongo copied to clipboard

Unable to save Embedded field data in django admin

Open RashmiR31 opened this issue 4 years ago • 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' <The complete python script used to produce the issue.>

image image

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'

RashmiR31 avatar Oct 07 '21 07:10 RashmiR31

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

LuAlJaBe avatar Oct 28 '21 04:10 LuAlJaBe

yeah same issue with me, I work with Django 3.8 and Djongo 1.3.3

zi-bot avatar Oct 28 '21 17:10 zi-bot

@nesdis dear I am also facing the same issue. It's really urgent.

vkpdeveloper avatar Jan 19 '22 14:01 vkpdeveloper

Indeed this issue persists, really messing up my day.

DDTEC-00 avatar Jan 19 '22 20:01 DDTEC-00

Any update on this?

josemojena avatar Apr 24 '22 12:04 josemojena

quelqu'un à put trouver la solution?

Diarrassouba02 avatar Sep 28 '23 12:09 Diarrassouba02