Marat_Web: официальная документация покрывает все аспекты использования фреймворка, ничего более подробного и актуального в природе не существует. Дальше только практиковаться.
zkweb: смотря что именно проверять нужно. Если соответствие данных некоторым требованиям, то лучше переопределить соответствующие методы в формах. А если в зависимости от содержимого полей надо выполнять те или иные действия, то лучше во вьюхе.
zkweb: вполне, если соответствие между формами и группами точно известно на этапе разработки. Если движок должен будет подстраиваться под неопределённое количество групп, создаваемых администраторами сайта, то придётся городить динамически генерируемую форму. А это уже вопрос не очень простой.
Roman Kitaev: а завтра бизнес скажет "Убираем wishlist" и придётся делать миграцию, как минимум. А у меня надо будет просто закоменитить строчку в INSTALLED_APPS. Кроме того, я не утверждаю, что это единственно верное решение. Просто вариант. Уверен, автор вопроса будет рад и другим.
Алексей Овдиенко: зачем m2m?! На каждый товар, который захотел пользователь, создаётся объект Wish, содержащий ссылку на пользователя и этот товар. Для каждого пользователя может быть сколько угодно таких объектов, хоть по количеству товаров.
zkweb: тогда лучше сделать две разных формы, а во вьюхе переопределить метод get_form, в котором проверять группу текущего пользователя и возвращать соответствующую форму.
Видеокурсы - это путь в бездну. Во-первых, чтение само по себе - хороший инструмент развития мозга, не стоит искать ему заменители. Во-вторых, объём знаний в одном часе видеокурса существенно меньший, чем за тот же час можно прочитать.