Сериализация набора запросов в JSON с помощью FK DJANGO

Я хочу отправить JSON модели таблицы пересечений, поэтому у меня сохранены только внешние ключи, я пытался сделать список и затем преобразовать его в JSON, но я получаю только идентификаторы, а мне нужно содержание, я также пытался в качестве временного решения сделать словарь с Queryset, но '<>' заставляет его отмечать ошибку в JS, кто-нибудь знает способ иметь данные моих внешних ключей и сделать их JSON?

модели:

class Periodos(models.Model):
    anyo         = models.IntegerField(default=2022)
    periodo      = models.CharField(max_length=10)
    fecha_inicio = models.DateField(blank=True, null=True)
    fecha_fin    = models.DateField(blank=True, null=True)
    class Meta:
        app_label = 'modelos'
        verbose_name = u'periodo'
        verbose_name_plural = u'Periodos'
        ordering = ('id',)
    def __str__(self):
        return u'%s - %s' % (self.anyo,self.periodo)

class Programas(models.Model):
    programa  = models.CharField(max_length=255,blank=True, null=True)
    activo    = models.BooleanField(default=True)
    class Meta:
        app_label           = 'modelos'
        verbose_name        = u'Programas'
        verbose_name_plural = u'Programas'  
    def __str__(self) -> str:
        return self.programa


class Programa_periodo(models.Model):
    periodo     = models.ForeignKey(Periodos, related_name='Programa_periodo_periodo',on_delete=models.CASCADE)
    programa    = models.ForeignKey(Programas, related_name='Programa_periodo_Programa',on_delete=models.CASCADE)
    
    class Meta:
        app_label           = 'modelos'
        verbose_name        = u'Programa Periodo'
        verbose_name_plural = u'Programa Periodo'  

    def __str__(self) -> str:
        return self.programa.programa

py куда я посылаю данные

def iniciativa(request):
    if request.user.is_authenticated:
        context                    = {}
        
        context['marcas']          = json.dumps(list(Marcas.objects.values()))
        context['eo']              =  get_estructura_org()
        
        #This is where I call the data 
        programa = Programa_periodo.objects.all()
        
        #These two only return the ids
        # context['programa_periodos'] = json.dumps(list(Programa_periodo.objects.values()))
        #context['programa_periodos'] = serializers.serialize("json", Programa_periodo.objects.all())

        #One of my try but fail for the '<>'
        programa_periodo = {} 
        for pg in  programa:
            programa_periodo[pg.periodo] = pg.programa
                    
        context['programa_periodos'] = programa_periodo
        
        return render(request, 'agregar_iniciativa.html', context)
    else:
        return HttpResponseBadRequest('Favor de ingresar sesión en el sistema.', format(request.method), status=401)

Я не уверен, что правильно понял вопрос, но если вам нужно значение специального поля из внешнего ключа, вы можете использовать что-то вроде Programa_periodo.objects.values("id", "periodo__periodo", "programa__programa") с двойным подчеркиванием. Сначала попробуйте это в оболочке. Посмотрите документацию здесь https://docs.djangoproject.com/en/4.0/ref/models/querysets/#values

Вернуться на верх