Как связать поля в Django Admin? - PullRequest
       57

Как связать поля в Django Admin?

0 голосов
/ 28 ноября 2018

В модели у меня есть DecimalField "first_arg" и множественный выбор CharField "second_arg".

Я бы хотел добиться следующего: в панели администратора, если конкретный вариант (давайтескажем, "B") выбрано для поля "second_arg", увеличивайте любое значение, которое вставляется в поле формы "first_arg", на 2. Это должно происходить только на уровне пользовательского интерфейса.Какой правильный способ это сделать?

Поскольку это часть интерфейса администратора, изменение модели должно быть неправильным.С другой стороны, я не смог найти ничего об этом в документации.Я думал об использовании JS в статическом файле, но это довольно странно.Есть ли элегантный способ сделать это в Django Admin?

Код модели:

a = "a"
b = "b"
etc = "etc"
RELEVANT_OPTIONS = (
    (a, "A"),
    (b, "B"),
    (etc, "etc")
)


class MyModel(models.Model):

    first_arg = models.DecimalField(
        max_digits=4,
        decimal_places=2,
        blank=True, null=True
    )
    second_arg = models.CharField(
        choices=constants.RELEVANT_OPTIONS,
        max_length=20,
        blank=True, null=True
    )

    class Meta:
        abstract = True

1 Ответ

0 голосов
/ 29 ноября 2018

Я думаю, вам придется переопределить шаблоны и подать немного JavaScript.Он достаточно расширяемый, что не слишком "хакерский" (т.е. вам не нужно переопределять весь шаблон администратора):

Все остальные известные мне параметры могут повлиять на работу сервера.

...