В вопросе 2 сомнение правильно подмечено, если надо все лишь сохранить расценки исполнителя по определенной категории, проще использовать:
- модель исполнителя
- модель категории
- модель "расценка исполнителя" с двумя ключами FK - один к исполнителю, второй к категории
M2M через through в такой ситуации - перебор.
Это из того, что видно из представленного примера. Возможно полный проект накладывает иные требования.
Ну а если все же первый вариант:
1. Вывести несколько раз одно поле модели в форму - значит форму надо кастоимзировать и лаконичным fields = '__all__' не обойтись:
class AddPerformerForm(ModelForm):
category1 = прописываем обычное поле формы, дублирует поле модели (max_length, и т.п.)
category2 = прописываем обычное поле формы еще раз
class Meta:
model = Performer
fields = ('performer`, 'price`) # вместо "все", пишем остальные нужные поля кроме категорий
# exclude тогда не требуется
2. Раз форма кастомная, view тоже надо прописать с кодом, где данные категории1 и категории2 или сколько бы их там ни было (ведь это many-to-many, а вы решили вручную их в html добавить в произвольном количестве) обрабатываются в таком порядке:
- (1) форму сохранить с опцией save(commit-false),
- (2) добавить к моделе исполнителя все нужные категории и, в завершение
- (3) сохранить модель/форму в базу через save().
Но перестроить отношения моделей могло бы все здорово упростить и позволило бы использовать лаконичное объявление форм и встроенные CreateView и т.п.