Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
cómo agregar un formulario de modelo diferente a modelformset_factory

Con respecto a estos modelos:

 class Projects(models.Model): projectDescription = models.CharField(max_length=50,blank=True,null = True,) status = models.IntegerField(choices = Status_CHOICES, default = 4) projectOwner = models.ForeignKey(staff, on_delete=models.CASCADE, blank=True,null = True,) class Updates(models.Model): project = models.ForeignKey(Projects, on_delete=models.CASCADE) update = models.CharField(max_length=50,blank=True,null = True,) updateDate = models.DateTimeField(default = timezone.now, editable = False) addedBy = models.CharField(max_length=35,blank=True,)

Quiero crear una vista que muestre formularios para todos los proyectos actuales. Esto es fácil usando un modelformset_factory . Pero, ¿cómo puedo agregar un formulario adicional a cada una de estas instancias de formulario de proyecto para que se pueda realizar una actualización del proyecto (clave externa)? Idealmente, el usuario realiza cambios en varios proyectos, agrega una actualización a uno o varios proyectos y luego envía el formulario para guardar todos los cambios. Lo que tengo a continuación parece estar muy cerca, pero está guardando una actualización para cada proyecto con el valor de lo que haya escrito en el último formulario. Lo cual parece deberse a que la forma no es única. Seguí el camino de usar prefijos que tampoco parecían llevarme a ninguna parte. ¡ayuda!

formulario de actualización

 class updateForm(ModelForm): def __init__(self, *args, **kwargs): super(updateForm, self).__init__(*args, **kwargs) class Meta: model = Updates fields = ('update',)

vista:

 def MDSprojects(request): projects = Projects.objects.filter(dept = 'Assistive Technology') projectFormset = modelformset_factory(Projects, form=EditProjectForm, extra = 0) if request.method == 'POST': formsetA = projectFormset(request.POST,request.FILES) if formsetA.is_valid(): for f in formsetA: formA = f.save(commit = False) id = formA.id formA.save() formsetB = updateForm(request.POST,request.FILES) if formsetB.is_valid(): formB = formsetB.save(commit = False) project = Projects.objects.get(id = id) formB.project = project formB.save() else: print(formsetB.errors) return redirect('MDS_Projects') else: print(formsetA.errors) else: formsetA = projectFormset(queryset = projects) formsetB = updateForm() return render(request,'MDSprojectsB.html',{'formset':formsetA,'formsetB':formsetB,})

Plantilla:

 <form method="POST" enctype= multipart/form-data> {{ formset.management_form }} {% csrf_token %} {%for form in formset%} {{ form.management_form }} {% for hidden in form.hidden_fields %} {{ hidden }} {% endfor %} <div class="card border-primary mb-3" style="max-width: 85rem;"> <div class="card-header text-primary"> <strong>{{form.instance.projectDescription}}</strong> </div> <div class="card-body text-primary"> Project Name: {{form.projectDescription}}</div> <div class="card-body text-primary"> Status: {{form.status}}</div> <div class="card-body text-primary"> Status: {{form.projectOwner}}</div> <div class="card-body text-primary"> Status: {{form.priority}}</div> <div> {{ formsetB.management_form }} {% for hidden in formsetB.hidden_fields %} {{ hidden }} {% endfor %} {{formsetB}} </div> </div> {% endfor %} <button class="btn btn-success btn" type="submit">Save Changes</button> </form>

EDITAR:

Quizás otra forma de explicar mi pregunta es:

Si tuviera los mismos modelos que el anterior:

 class Projects(models.Model): projectDescription = models.CharField(max_length=50,blank=True,null = True,) status = models.IntegerField(choices = Status_CHOICES, default = 4) projectOwner = models.ForeignKey(staff, on_delete=models.CASCADE, blank=True,null = True,) class Updates(models.Model): project = models.ForeignKey(Projects, on_delete=models.CASCADE) update = models.CharField(max_length=50,blank=True,null = True,) updateDate = models.DateTimeField(default = timezone.now, editable = False) addedBy = models.CharField(max_length=35,blank=True,)

Quiero tener una vista que represente todos los proyectos actuales como formularios individuales para que el usuario pueda realizar cambios en el modelo del proyecto en una sola vista. Además, quiero que el usuario también pueda agregar una actualización a cada proyecto.

Entonces, por ejemplo, si tuviera 3 proyectos, esperaría ver 3 formularios en la página. Cada formulario contendría los campos para modificar este proyecto (por lo que estos campos de formulario se completarían previamente con los valores actuales). Luego, por último (la parte en la que estoy atascado) sería un campo vacío adicional para agregar una actualización al proyecto.

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda