Я недавно играл с Джанго с моим TestApp и столкнулся с проблемой, что я никогда не сталкивался раньше, и я хотел бы просить некоторую помощь в моей проблемеДжанго: <DjangoObject> не JSON сериализации
У меня есть следующая модель:
class Courses_list(models.Model):
abbreviation = models.CharField(max_length=100, unique=True)
course = models.CharField(max_length=100, unique=True)
class Job(models.Model):
job_Position = models.CharField(max_length=30, unique=True)
def __unicode__(self):
return self.job_Position
class Job_Posting(models.Model):
fkey = models.OneToOneField("Job")
class Educational_Requirement(models.Model):
fkey = models.ForeignKey('Job_Posting')
course = models.ForeignKey('Courses_list')
И форма, которая выглядеть следующим образом
class CourseField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.Course
class SomeForm(ModelForm):
course = CourseField(queryset=Educational_Requirement.objects.all())
После сохранения я получаю: <Job: Job_PositionValue> is not JSON serializable
Я спасаю данных формы по адресу:
class SomeModel(models.Model):
course = models.CharField(max_length=50)
Что я делаю неправильно? Что означает ошибка в отношении моей проблемы? Большое спасибо.
EDIT
Здесь представлен TraceBack
Environment:
Request Method: POST
Request URL: http://localhost:8000/2/apply
Django Version: 1.8.2
Python Version: 2.7.10
Installed Applications:
('grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sessions.models',
'frontend',
'file_maintenance',
'reports',
'transactions',
'admin_reorder',
'admin_notifications',
'django_twilio')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.models.User',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'admin_reorder.middleware.ModelAdminReorder')
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
223. response = middleware_method(request, response)
File "C:\Python27\lib\site-packages\django\contrib\sessions\middleware.py" in process_response
50. request.session.save()
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\db.py" in save
58. session_data=self.encode(self._get_session(no_load=must_create)),
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\base.py" in encode
88. serialized = self.serializer().dumps(session_dict)
File "C:\Python27\lib\site-packages\django\core\signing.py" in dumps
90. return json.dumps(obj, separators=(',', ':')).encode('latin-1')
File "C:\Python27\lib\json\__init__.py" in dumps
250. sort_keys=sort_keys, **kw).encode(obj)
File "C:\Python27\lib\json\encoder.py" in encode
207. chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py" in iterencode
270. return _iterencode(o, 0)
File "C:\Python27\lib\json\encoder.py" in default
184. raise TypeError(repr(o) + " is not JSON serializable")
Exception Type: TypeError at /2/apply
Exception Value: <Job: System Admin> is not JSON serializable
EDIT 2
Это не имеет ничего общего с моим О.П., как я понятия не имею, что причиной его
Я нашел проблему, это было с моим request.session
, я понятия не имею, у, но добавление str()
со значением Я вставив сделал трюк: request.session['SessionName'] = str(myvalue)
Мои взгляды после исправления:
def save_page(request, job_id):
form = application_form(request.POST)
if request.method == 'POST':
cde = form.save(commit = False)
....
request.session['SessionName'] = str(cde.SomeField)
cde.save()
Ошибка не исходит от этого кода, потому что здесь нет ничего, что связано с JSON. Пожалуйста, разместите фактический код и полную трассировку. –
Я отправил свой полный след, я все еще пытаюсь найти источник ошибки, и я не могу вставить свои представления, поскольку он слишком длинный, извините за это –