models.objects.all (): объект типа SafeDeleteQueryset не JSON сериализуемый - PullRequest
0 голосов
/ 21 апреля 2020

Я повторно использую код, который уже использовал в предыдущем проекте, и не знаю, почему он сейчас не работает?

Я определяю свои модели сайта с помощью SafeDeleteModels и пытаюсь вернуть список сайтов с промежуточное программное обеспечение и получить ошибку Object of type SafeDeleteQueryset is not JSON serializable

, если я использую serializers.serialize, у меня нет ошибки

models.py

from safedelete.models import SafeDeleteModel, SOFT_DELETE, SOFT_DELETE_CASCADE

class Site(SafeDeleteModel):
    """ A class to create a site instance.
        A site can be a a follow-up site (i.e. Site), a national coordination center (i.e. National) or a
        monotoring and management center (i.e. International).
    """

    _safedelete_policy = SOFT_DELETE_CASCADE
    sit_ide = models.AutoField("Code number", primary_key = True)
    reg = models.ForeignKey(Region, on_delete = models.CASCADE) # related region
    sit_typ = models.CharField("Type", max_length = 15)
    sit_nom_eng = models.CharField("Nom", max_length = 100)
    sit_nom_fra = models.CharField("Nom", max_length = 100)
    sit_abr = models.CharField("Code lettre", max_length = 3)
    log = HistoricalRecords()

    class Meta:

        db_table = 'adm_sit'
        verbose_name_plural = 'Sites'
        ordering = ['sit_nom_fra', 'sit_ide']

middleware.py

from django.conf import settings
from django.http import HttpResponseRedirect
from django.core import serializers
from django.contrib import auth
from django.contrib.auth.models import User
from parameters.models import Profile, Pays, Region, Site
from django.db.models import Q
from datetime import datetime, timedelta

def initialisation(get_response):

    def middleware(request):
        response = get_response(request)

        if request.user.is_authenticated:
            user_site = Site.objects.get(profile__user = request.user.id)
            request.session['language'] = request.headers['Accept-Language'][:2]
            request.session['user_site_type'] = user_site.sit_typ
            request.session['user_pays'] = user_site.reg.pay.pay_ide
            request.session['user_site'] = user_site.sit_abr

            # liste des sites accessibles à l'utilisateur connecté
            if user_site.sit_typ == 'International':
                request.session['user_authorized_sites'] = Site.objects.all()
                # request.session['user_authorized_sites'] = serializers.serialize('json',Site.objects.all(),fields=('sit_ide', 'sit_typ', 'sit_nom_eng', 'sit_nom_fra', 'sit_abr'))
...