У меня есть вложенная встроенная настройка в администраторе Django, где я хочу скрыть дочерний встроенный элемент до тех пор, пока не появится его родительский элемент. сохраняется. Вот упрощенная версия моих моделей:
Код: Выделить всё
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
class Component(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
name = models.CharField(max_length=255)
class ComponentSetting(models.Model):
component = models.ForeignKey(Component, on_delete=models.CASCADE)
key = models.CharField(max_length=255)
value = models.CharField(max_length=255)
Код: Выделить всё
from django.contrib import admin
from nested_admin import NestedModelAdmin, NestedTabularInline
class ComponentSettingInline(NestedTabularInline):
model = ComponentSetting
extra = 0
class ComponentInline(NestedTabularInline):
model = Component
extra = 0
inlines = [ComponentSettingInline]
class ProductAdmin(NestedModelAdmin):
inlines = [ComponentInline]
admin.site.register(Product, ProductAdmin)
- При редактировании продукта я могу добавлять компоненты
Встроенный параметр ComponentSetting виден сразу при добавлении нового
компонента. - Я хочу, чтобы встроенный элемент ComponentSetting отображался только после того, как
компонент
сохранено
- Встроенные настройки компонентов должны быть скрыты при добавлении нового компонента
- Встроенные настройки компонента должны появляться только после
сохранения компонента - Встроенные настройки компонентов должны быть видны при редактировании существующего
Компонент
- переопределить get_inlines(), но это не работает, потому что вnestedInlines он вызывается один раз при загрузке страницы, поэтому мы не можем адаптировать его поведение в отношении того, что родительский элемент создан или нет
- Использование свойства шаблона для вернуть пустую строку или пустой шаблон
- Использование has_add_permission и get_queryset
< li>Проверка существования родительского экземпляра
Вопрос
Как правильно скрыть вложенный встроенный элемент (ComponentSetting) до тех пор, пока его родительский элемент (Компонент) не будет сохранен?
Я использую:
- Django 4.2
- django-nested-admin
- Python 3.10
Подробнее здесь: https://stackoverflow.com/questions/792 ... t-is-saved
Мобильная версия