Этот вопрос, кажется, задавался несколько раз на SO, но ни один из ответов, похоже, не работает.
У меня есть эта модель:
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Post(BaseModel):
user = models.ForeignKey(User, on_delete=models.CASCADE)
content_url = models.URLField(null=False)
и я пытаюсь сериализовать его в JSON здесь:
def create_post(request):
post_content = request.body
post_content_url = save_post(post_content) # returns a string
post = Post.objects.create(user=request.user, content_url=post_content_url)
post.save()
return JsonResponse({"post": post})
Когда я делаю это, я получаю следующую ошибку:
TypeError: Object of type Post is not JSON serializable
Что я делаю не так? Предполагается, что класс JsonResponse
выводит объект в json:
class JsonResponse(HttpResponse):
def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
json_dumps_params=None, **kwargs):
if safe and not isinstance(data, dict):
raise TypeError(
'In order to allow non-dict objects to be serialized set the '
'safe parameter to False.'
)
if json_dumps_params is None:
json_dumps_params = {}
kwargs.setdefault('content_type', 'application/json')
data = json.dumps(data, cls=encoder, **json_dumps_params)
super().__init__(content=data, **kwargs)
Пожалуйста, помогите. Согласно всему, что я прочитал, это должно работать.