P
27 февраля 2023 г. 13:47

Как получить в массив значения из связанной модели?

Добрый день!
models.py:

  1. # Подразделения
  2. class Podraz(models.Model):
  3. title = models.CharField(max_length=150, verbose_name='Название подразделения', unique=True)
  4.  
  5. def __str__(self):
  6. return self.title
  7.  
  8. class Meta:
  9. verbose_name = 'Подразделение'
  10. verbose_name_plural = 'Подразделения'
  11. ordering = ['title', ]
  12.  
  13. # # Объекты
  14. class Obct(models.Model):
  15. title = models.CharField(max_length=150, verbose_name='Объект', unique=True)
  16. podraz=models.ForeignKey(Podraz,verbose_name='Подразделение',on_delete=models.PROTECT)
  17. def __str__(self):
  18. return self.title
  19.  
  20. class Meta:
  21. verbose_name = 'Объект'
  22. verbose_name_plural = 'Объекты'
  23. ordering = ['title', ]

Вот View:

  1. def SaveObct(request):
  2. if request.method=='POST':
  3. form = ObctForm(request.POST)
  4. if form.is_valid():
  5. title = request.POST['title']
  6. podraz=request.POST['podraz']
  7. newrecord=Obct(title=title,podraz_id=podraz)
  8. newrecord.save()
  9. un=Obct.objects.values()
  10. unit_data=list(un)
  11. print(un)
  12. return JsonResponse({'status':'Save','unit_data':unit_data})
  13. else:
  14. return JsonResponse({'status':0})

Вот получается список

  1. [{'id': 26, 'title': 'Объект 1', 'podraz_id': 13}, {'id': 27, 'title': 'Объект 2', 'podraz_id': 13}, {'id': 28, 'title': 'Объект 3', 'podraz_id':
  2. 14}]

А как можно в список 'un' получить значения и из таблицы Podraz? Например:

  1. [{'id': 26, 'title': 'Объект 1', 'podraz': 'Участок 1'}, {'id': 27, 'title': 'Объект 2', 'podraz':'Участок 1' }, {'id': 28, 'title': 'Объект 3', 'podraz':
  2. 'Участок 2'}]

Мне это для JsonResponse надо... Или есть другой какой способ?
Спасибо!

2

Вам это нравится? Поделитесь в социальных сетях!

1
P
  • 27 февраля 2023 г. 15:04

Спасибо, разобрался:))

    Комментарии

    Только авторизованные пользователи могут публиковать комментарии.
    Пожалуйста, авторизуйтесь или зарегистрируйтесь