Показывать многократно выбранные объекты при загрузке представления редактирования

Я делаю форму редактирования для некоторых данных. У меня проблема с передачей информации в . Как вы можете видеть в моем представлении, я передаю данные в форму, используя "начальный" словарь.

VIEWS.PY

@login_required
def project_detail(request, project_id):
    if request.method == 'POST':
        project = get_object_or_404(Project, pk=project_id)
        form = ProjectDetailForm(project_id, request.POST, instance = project)        
        if form.is_valid():
            instance = form.save(commit=False)
            instance.client = Project.objects.get(pk=project_id).client
            form.save()
            messages.success(request,'Projeto modificado')
            return redirect('projects')
        else:
            messages.error(request,'Ocorreu um erro!')
    else:
        project = get_object_or_404(Project, pk=project_id)
        form = ProjectDetailForm(project_id, initial={'modal':project.modal,
                                                    'culture':project.culture,
                                                    'owner':project.owner,
                                                    'value':project.value,
                                                    'final_date':project.final_date,
                                                    'text':project.text,
                                                    'status':project.status,
                                                    'farm':project.farm.values()})
    return render(request,'project_detail.html',{'form':form})

Но при этом данные не вытесняются в . Думаю, что ManyToManyField сохраняет данные в списках. Я пробовал итерировать это поле, но все равно не работает, и я думаю, что это не лучший способ сделать это.

MODELS.PY

class Project(models.Model):
    modal_types = [('CUSTEIO AGRÍCOLA','Custeio Agrícola'),('CUSTEIO PECUÁRIO','Custeio Pecuário'),('INVESTIMENTO AGRÍCOLA','Investimento Agrícola'),('INVESTIMENTO PECUÁRIO','Investimento Pecuário'),('FGPP','FGPP')]
    status_opts = [('Análise','Análise'),('Desenvolvimento','Desenvolvimento'),('Processamento','Processamento'),('Liberação','Liberação'),('Finalizado','Finalizado'),('Cancelado','Cancelado'),('Suspenso','Suspenso')]
    farm = models.ManyToManyField(Farm, related_name='farm_name',verbose_name='Propriedade beneficiada')
    client = models.ForeignKey(Clients, on_delete=models.CASCADE, related_name='project_client',default=None,null=True, verbose_name='Cliente')
    owner = models.ForeignKey(Owner, on_delete=models.CASCADE, related_name='project_bidder',default=None,null=True, verbose_name='Proponente')
    warranty = models.ManyToManyField(Farm, related_name='project_warranty',default=None, verbose_name='Propriedade de garantia')
    modal = models.CharField(max_length=100,default=None,choices=modal_types, null=True, verbose_name='Tipo')
    culture = models.CharField(max_length=50,null=True, verbose_name='Cultura')
    status = models.CharField(max_length=50,null=True, verbose_name='Status', choices=status_opts)
    created_date = models.DateField(null=True, verbose_name='Data de criação')
    value = models.FloatField(max_length=10,null=True, verbose_name='Valor financiado')
    final_date = models.DateField(default=None,null=True, verbose_name='Fim do contrato')
    text = models.TextField(default=None,null=True, verbose_name='Observações')

Здесь все поля с информацией, но в "select" ничего не выбирается, несмотря на наличие данных в базе enter image description here

Кто-нибудь может мне помочь?

Почему вы передаете 'project_id' в экземпляр класса вашей формы? Попробуйте изменить это:

form = ProjectDetailForm(project_id, request.POST, instance = project)

на это:

form = ProjectDetailForm(request.POST, instance = project)

и посмотрите, поможет ли это.

Вернуться на верх