Хорошо, вы хотите, чтобы ваш второй тип архетип 2 был добавлен только один раз внутри архетип 1 ?
Я бы сделал это таким образом, чтобы раскрывающийся список Добавить новый на зеленой панели редактирования показывал архетип 2 , только если он может быть добавлен (другие решения здесь требуют пользователя сначала сделать форму добавления , а затем сказать, что это запрещено).
Вам необходимо убедиться, что папка архетип 1 подклассов ConstrainTypesMixin .
Я думаю, что если вы используете типы содержимого папок в Products.ATContentTypes , вы автоматически создадите подкласс этого класса mixin, но это поможет убедиться.
Затем внутри архетипа 1 добавьте метод: getLocallyAllowedTypes . Этот метод объявлен в классе ConstrainTypesMixin в Products / ATContentTypes / lib / constraintypes.py
В этом методе вы можете теперь добавить логику, чтобы проверить, был ли уже добавлен экземпляр архетип 2 . Если это так, не возвращайте его как один из локально разрешенных типов. Если этого не произошло, верните его (вместе с другими типами, если они существуют).
Обязательно сначала вызовите super () в этом методе, чтобы получить локально добавленные типы из метода суперкласса.
Чтобы понять, как это работает, вы можете посмотреть на метод * _addableTypesInContext * в FactoriesSubMenuItem классе plone / app / contentmenu / menu.py , чтобы узнать, когда и как это getLocallyAllowedTypes метод вызывается.