Как показать значение поля django условно из дочерней или родительской модели - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть следующая родительская модель

class Parent(Model):

    value1 = models.CharField(max_length=50)
    value2 = models.CharField(max_length=50)
    .......

и детская модель

class Child(Model)

     value1 = models.CharField(max_length=10, blank=True, null=True)
     value2 = models.CharField(max_length=10, blank=True, null=True)
     ...........

как я могу вернуть значение поля условно?

как я могу показать в шаблонах (таблицах / списках или деталях) из родительского поля, если поле с тем же именем от дочернего элемента имеет значение None.

И если значение поля в child не равно None, показать значение из child.

Можно ли фильтровать данные (детские) таким же образом?


Должен ли я использовать некоторые абстрактные или прокси-модели? Как?

1 Ответ

0 голосов
/ 05 апреля 2019

Я добавил ответ, потому что думаю, что не точно описал свой вопрос.

  1. Мне нужно создать уровень абстракции, в котором модель верхнего уровня будет иметь некоторые из основных полей

  2. Все производные / дочерние элементы верхнего уровня имеют те же поля, что и этот верхний уровень, и некоторые другие специфические поля.

  3. Если одно из дочерних полей (это из верхнего уровня) не изменено, чем представлено поле верхнего уровня,

  4. Если произошло изменение, то будет представлено значение от child.

  5. если в модели верхнего уровня произошли изменения, то все дочерние элементы, которые не были изменены, представят данные из верхней модели.


Моя идея состоит в том, чтобы использовать отношение ManyToOne и использовать модели Parent и Child, где child будет иметь те же поля, что и parent (дублирование данных), и некоторые дополнительные поля.

Когда будет создан child, я планирую скопировать данные из parent для дублированных полей.

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

Когда происходит сохранение родительского элемента, я планирую добавить дополнительный метод для перезаписи дочернего поля и скопировать родительские данные, если для дочернего логического (field_changed) задано значение false, иначе не перезаписывать.

Есть ли лучший способ для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...