В Django, как делегировать определенные поля соответствующим полям внешнего ключа, если они являются пустыми / пустыми? [Дубликат]

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

(...)();

. Это вызов функции. Внутри круглой скобки у вас есть:

function() {}

Это анонимная функция. Все, что объявлено с помощью var внутри конструкции, будет видимо только внутри одной и той же конструкции и не будет загрязнять глобальное пространство имен.

2
задан Asif Rahman 9 December 2009 в 10:57
поделиться

3 ответа

Это делается с трудом, когда это делается.

Пожалуйста, пересмотреть переопределение __getattribute__ и использовать для этого старые свойства.

Я подозреваю, что простой «getter»

Да, у вас может быть несколько похожих полей, но я думаю, что простые, очевидные свойства лучше подходят для Django ORM.

3
ответ дан S.Lott 20 August 2018 в 16:32
поделиться
  • 1
    Справедливо. Я подозревал, что это так. Спасибо за вашу помощь. – Asif Rahman 10 December 2009 в 05:30

Я полагаю, что переопределение __getattribute__ или __getattr__ может привести к стоимости исполнения. Вероятно, есть лучший способ решить эту проблему:

  1. При инициализации экземпляра модели, если наследуемое поле пустое, а поле соответствующего родителя - нет, выполните setattr(self, field_name, getattr(self.parent, field_name)).
  2. Отслеживайте изменения полей экземпляра модели.
  3. Перед сохранением экземпляра установите поля, которые ранее были переопределены, но не изменены на None.

Я разработка приложения Django для этого: https://github.com/Altaisoft/django-inheritance

1
ответ дан Altaisoft 20 August 2018 в 16:32
поделиться

Нужны ли вам атрибуты этого родителя теневым собственным? Если нет, лучше переписать __getattr__() вместо __getattribute__(), который не вызывается, когда сам экземпляр имеет свойство с этим именем:

def __getattr__(self, name):
    return getattr(self.parent, name)
1
ответ дан Denis Otkidach 20 August 2018 в 16:32
поделиться
Другие вопросы по тегам:

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