django forms: editando vários conjuntos de objetos relacionados em um único formulár

Estou tentando fazer algo que deve ser muito comum: adicione / edite vários modelos relacionados em um único formulário. Por exemplo

Visitor Details:
Select destinations and activities:
    Miami  []   -  swimming [], clubbing [], sunbathing[]
    Cancun []   -  swimming [], clubbing [], sunbathing[]

Meus modelos são Visitor, Destination e Activity, com Visitor tendo um campo ManyToMany em Destination por meio de um modelo intermediário, VisitorDestination, que possui os detalhes das atividades a serem realizadas no destino (em si, um campo ManyToMany em Activity

Visitor ---->(M2M though VisitorDestination) -------------> Destination
                                            |
                       activities            ---->(M2M)---> Activity  

Note que eu não quero entrarNov valores de destino / atividade, apenasescolhe daqueles disponíveis no banco de dados (mas esse é um uso perfeitamente legítimo dos campos M2M, certo?)

Para mim, isso parece uma situação extremamente comum (uma relação muitos para muitos com detalhes adicionais que são um campo FK ou M2M em outro modelo), e essa parece ser a modelagem mais sensata, mas, por favor, corrija-me se estiver errado .

Passei alguns dias pesquisando docs / SO / googling do Django, mas não consegui descobrir como lidar com isso. Eu tentei várias abordagens:

Modelo de modelo personalizado para Visitor, onde adiciono campos de múltipla escolha para Destino e Atividade. Isso funciona bem se Destino e Atividade puderem ser selecionados independentemente, mas aqui estão eles correlacionado, ou seja, desejo escolher uma ou várias atividades paracad destination

Usinginlineformset_factory para gerar o conjunto de formulários de destino / atividades, cominlineformset_factory(Destination, Visitor). Isso é interrompido porque o Visitante tem uma relação M2M com Destino, em vez de um FK.

Personalizando um formset simples, usandoformset_factory, por exemploDestinationActivityFormSet = formset_factory(DestinationActivityForm, extra=2). Mas como projetarDestinationActivityForm? Ainda não explorei o suficiente, mas não parece muito promissor: não quero digitar o destino e uma lista de atividades, quero uma lista de caixas de seleção com os rótulos definidos para o destino / atividades que desejo para selecionar, mas oformset_factory retornaria uma lista de formulários com rótulos idêntico

Eu sou um novato completo com django, então talvez a solução seja óbvia, mas acho que a documentação nesta área é muito fraca - se alguém tiver algumas dicas para exemplos de uso de formulários / conjuntos de formulários que também seriam úteis

obrigado

questionAnswers(3)

yourAnswerToTheQuestion