Я написал метод __init__ для одной из моих моделей, который добавляет некоторую вспомогательную информацию к объекту путем динамического добавления атрибута к объекту, который не отражает столбец в базе данных:
class MyModel(models.Model):
title = Models.CharField()
description = Models.TextField()
def __init__(self, *args, **kwargs):
self.aux_info = "I'm not in the database!"
Это казалосьчтобы работать нормально, но я нашел случай, когда он не работает.У меня есть некоторый код в представлении, где я устанавливаю переменную состояния и упаковываю список MyModels
в json следующим образом:
from django.core import serializers
from django.utils import simplejson
...
# have to use serializers for django models
serialized_items = serializers.serialize("json", itemlist)
data["items"] = serialized_items # serialized_items is now a string
data["status"] = status
# package up data dict using simplejson for python objects
resp = simplejson.dumps(data)
return HttpResponse(resp, mimetype="application/javascript")
Проблема, похоже, в том, что сериализаторы django только сериализуют поля модели ине все атрибуты объекта, поэтому aux_info не проходит.Я также уверен, что использование сериализаторов и simplejson не является правильным способом сделать это.Спасибо за любую помощь!