Nomad
Nomad7 ноября 2020 г. 10:04

Отображение моделй в админке Django

django, Model, adminmodel

всем привет

помогите пожалуйста разобраться в следующем:

во первых речь идет о задаче на стороне стандартной джанговкой админки.

предположим есть три модели:

class M1(models.Model):
    title = ...

class M2(models.Model):
    m1 = ForeignKey(m1)
    name = ...

class M3(models.Model):
    f1 = ForeignKey(m1)
    f2 = ManyToManyField(M2)

с данными

добавляем все 3 модели в админку.

заходим из админки в 3-ю модель для того чтобы создать запись, выбираем f1 (ForeignKey к M1); а в списке второго поля f2 чтобы были только те записи из второй таблице которые соответствуют данному ForeignKey

можно ли этот интерактивчик сделать в стандартной админке джанго ??

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

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

1
Илья Чичак
  • 7 ноября 2020 г. 11:27
  • (ред.)

за один заход - нет
чтобы сделать так, я бы сделал
кастомную форму, которую указал админке 3-ей модели

и сделал бы следующее:

class M3Form(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if not self.instance.f1:
            self.field['f2'].readonly = True
        else:
            self.field['f2].queryset = self.field['f2].queryset.filter(m1=self.instance.f1)

(за точность не ручаюсь, надо проверять)

плюс сделал бы проверку, что если f1 изменился, убрать все всязанные объекты

получается, при создании, m2m поле будет неактивно, после того, как f1 поле было выбрано, поле становится редактируемое и в вырианты попадают только те, что ссылаются на значения поля f1

получается, полноценно объект придется редактировать два раза

ну и опять же, возможно есть смысл как-то подумать над изменением схемы БД, поскольку ограничения, которые настроены только через логику админки - такое себе. при манипуляциях с БД напрямую или через django shell - эти ограничения могут быть проигнорированы

как вариант, добавить в метод save() модели проверку связанных объектов и, если что-то не так, кидать исключение

    Комментарии

    Только авторизованные пользователи могут публиковать комментарии.
    Пожалуйста, авторизуйтесь или зарегистрируйтесь
    m
    • molni99
    • 26 октября 2024 г. 1:37

    C++ - Тест 004. Указатели, Массивы и Циклы

    • Результат:80баллов,
    • Очки рейтинга4
    m
    • molni99
    • 26 октября 2024 г. 1:29

    C++ - Тест 004. Указатели, Массивы и Циклы

    • Результат:20баллов,
    • Очки рейтинга-10

    C++ - Тест 003. Условия и циклы

    • Результат:42баллов,
    • Очки рейтинга-8
    Последние комментарии
    i
    innorwall10 ноября 2024 г. 13:03
    Django - Урок 029. Добавление личных сообщений и чатов на сайте - Часть 1 priligy at walgreens ortho ciprofloxacin tablet uses in telugu Republicans in Congress have chastised Obama s top health adviser, Health and Human Services Secretary Kathleen Sebelius, …
    i
    innorwall10 ноября 2024 г. 9:55
    Как Копировать Файлы в Linux In dogs, it is used to facilitate synchronized cardioversion of atrial fibrillation buy priligy usa
    i
    innorwall10 ноября 2024 г. 9:03
    Как написать игру на Qt - Урок 3. Взаимодействие с другими объектами priligy otc I routinely do not tell patients and or parents of patients with atopic dermatitis to avoid glutamates in food
    i
    innorwall10 ноября 2024 г. 6:05
    QML - Урок 020. Старт работы с Android Manifest в Qt Creator PMID 34322115 Free PMC article pastillas priligy en mexico
    i
    innorwall10 ноября 2024 г. 4:31
    Сборка драйвера QMYSQL (MariaDB) Windows 10 x64 QT 5.13.0 Mingw73_64 amazon priligy Conclusion This is the first study of the adverse effects of quetiapine ingestion by children under 7 years of age
    Сейчас обсуждают на форуме
    i
    innorwall10 ноября 2024 г. 8:22
    добавить qlineseries в функции The information provided in Dosage Posology and method of administration of Tamoxifen Actavis is based on data of another medicine with exactly the same composition as the Tamoxifen Actavis …
    9
    9Anonim25 октября 2024 г. 9:10
    Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
    ИМ
    Игорь Максимов3 октября 2024 г. 4:05
    Реализация навигации по разделам Спасибо Евгений!
    F
    Fynjy22 июля 2024 г. 4:15
    при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

    Следите за нами в социальных сетях