Сериализация набора запросов в 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