Джанго подает сигналы с полей ForeignKey

При компиляции шаблоны должны быть созданы экземплярами , прежде чем их компилировать в объектный код. Это создание может быть достигнуто только в том случае, если известны аргументы шаблона. Теперь представьте сценарий, в котором функция шаблона объявлена ​​в a.h, определенная в a.cpp и используемая в b.cpp. Когда компилируется a.cpp, не обязательно известно, что для предстоящей компиляции b.cpp потребуется экземпляр шаблона, не говоря уже об этом конкретном экземпляре.

Можно утверждать, что компиляторы можно сделать умнее, чтобы «смотреть вперед» для всех применений шаблона, но я уверен, что это было бы нелегко создавать рекурсивные или другие сложные сценарии. AFAIK, компиляторы этого не делают. Как заметил Антон, некоторые компиляторы поддерживают явные декларации экспорта экземпляров шаблонов, но не все компиляторы поддерживают его (пока?).

0
задан James Keir 3 March 2019 в 18:01
поделиться

1 ответ

Прежде всего, благодаря @ Дани Эррере и @ Давиду Товмасяну ! Между ними я выяснил, в чем проблема: оказывается, я ошибся в нескольких вещах.

Ошибка исходила из базы данных: value too long for type character varying(1) сообщал мне, что я пытался ввести строку, которая была слишком длинной для предполагаемого поля. Это поле было полем состояния. Похоже, что хотя опция выбора работала идеально в нормальных условиях, команда сигнала требовала только краткую форму выбора .

Правильный код выглядит следующим образом:

@receiver(post_save, sender=KBSBlock)
def create_block(sender, instance, created, **kwargs):
    if created:
        instance.blockdetails_set.create(block_dts=instance.name, code='00', enter_by=instance.enter_by, attribute1='All', status='D')

Примечание: регистр имени модели ДОЛЖЕН быть строчным, даже в классе моделей есть заглавные буквы

Как только я это исправил - все заработало.

0
ответ дан James Keir 3 March 2019 в 18:01
поделиться
Другие вопросы по тегам:

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