@HASANN

Выполнить запрос к PostgreSQL, и загрузить полученные данные в поле django-admin?

Здраствуйте друзья. Есть таблица состоящая из полей category_id, brand_name. Необходимо после выбора category_id в админке джанги, чтобы выполнялся конкретный запрос к базе и результат запроса загружался в поле для выбора бренда. Т.к. у каждой категории свои бренды. Запрос уже есть. Вопрос в том, как загрузить данные в поле для выбора бренда в админке? И как выполнить sql запрос после выбора категории? Брендов для одной категории может быть несколько.
  • Вопрос задан
  • 823 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Примерно так

forms.py
from django import forms

class CategoryAdminForm(forms.ModelForm):
    class Meta:
        model = Category
        exclude = ['brand_name']

admin.py
from django.contrib import admin
from django.db import connection

from .models import Category
from .forms import CategoryAdminForm

@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    SQL_QUERY = '...'

    form = CategoryAdminForm

    def get_form(self, request, obj=None, **kwargs):
        form_class = super(CategoryAdmin, self).get_form(request, obj=obj, **kwargs)
        with connection.cursor() as cursor:
            cursor.execute(SQL_QUERY, [obj.category_id])
            row = cursor.fetchone()
            form_class.brand_name = forms.CharField(initial=row[0])
            return form_class
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы