@stayHARD

Django Admin Panel. Как динамически вывести поля исходя из переменной в settings.py?

Привет, {{ user.username }}.

Нужна твоя помощь/совет по реализации кастомных полей в админке Django.

Суть:
Исходя из определенных значений добавлять к объекту(модели) при его создании в админке дополнительные поля.

Входные данные:
Переменная в settings.py:
TARGET_LANGUAGES = (
    'ru', 'Russian',
    'es', 'Spanish',
)


Модель Topic в models.py:
class Topic(models.Model):
    name = models.CharField(max_length=255)
    category = models.ForeignKey(Category)

    def __unicode__(self):
        return self.name


Модель LocalaziedTopic в models.py:
class LocalizedTopic(models.Model):
    topic = models.ForeignKey(Topic)
    content = models.CharField(max_length=255)
    lang = models.ForeignKey(Language, default='en')

    def __unicode__(self):
        return self.topic.name


Задание:
При создании нового Topic выдавать поля:
- name
- category
а дальше столько полей сколько в settings сейчас языков(например для текущих, те что выше)
будет:
- localized_topic_name_russian
- localized_topic_name_spanish

Сохранить как один объект Topic и два объекта LocalizedTopic.

Какие будут соображения?
  • Вопрос задан
  • 872 просмотра
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
А сделать LocalizedTopic инлайном для Topic не хотите? Их количество можно ограничить задав max_num = len(TARGET_LANGUAGES)

admin.py
class LocalizedTopicAdmin(admin.StackedInline):
    model = LocalizedTopic
    max_num = len(settings.TARGET_LANGUAGES)

class TopicAdmin(admin.ModelAdmin):
    inlines = [LocalizedTopicAdmin]
Ответ написан
bogdanov-s
@bogdanov-s
Че-то там программирую
from django.conf import settings

for lang in settings.TARGET_LANGUAGES:
    # Add custom field...
Ответ написан
mututunus
@mututunus
Backend developer (Python, Golang)
Ваш ответ на вопрос

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

Похожие вопросы