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

254
Visualizações
addChild() falta 1 argumento posicional requerido: 'pk

Tengo dos modelos, a saber, padre e hijo. He logrado hacer un modelo de formulario para registrar a un Padre. Ahora quiero poder agregar un hijo al padre.

Resultado esperado: cada padre debe tener un enlace que abra un formulario de registro de niños. El campo de nombre principal debe tener el valor inicial del principal.

Actualmente recibo este error,

addChild() falta 1 argumento posicional requerido: 'pk

modelos.py

 class Parent(models.Model): surname = models.CharField(max_length=150, null=False, blank=False) first_name = models.CharField(max_length=150, null=False, blank=False) class Child(models.Model): parent = models.ForeignKey(Parent, null=True, blank=True, on_delete=SET_NULL) first_name = models.CharField(max_length=50, null=False, blank=False) last_name = models.CharField(max_length=50, null=False, blank=False)

views.py (¿Qué me estoy perdiendo en mi vista addChild?)

 def addParent(request): form = ParentForm() if request.method == 'POST': form = ParentForm(request.POST, request.FILES) if form.is_valid(): form.save() def addChild(request, pk): parent = Parent.objects.get(id=pk) form = ChildForm(initial={'parent' :parent}) if request.method == 'POST': form = ChildForm(request.POST) if form.is_valid(): form.save()
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Se pk que la URL del paquete es parte de la URL, por lo que debe actualizar los patrones de urlpatterns a:

 path('add_child/ <int:pk> /', views.addChild, name='add_child'),

Si visita la URL, debe visitar add_child/ 123 / con 123 la clave principal del padre para el que desea agregar un hijo.

Dado que la clave principal del padre está en la URL, no tiene mucho sentido mantenerla en el formulario. Puede reescribir ChildForm para:

 from django import forms class ChildForm(forms.ModelForm): class Meta: model = Child fields = ['first_name', 'last_name'] # ← no parent

y deje que la vista establezca el padre al enviar el formulario:

 from django.shortcuts import redirect def addChild(request, pk): if request.method == 'POST': form = ChildForm(request.POST) if form.is_valid(): form.instance .parent_id = pk form.save() return redirect(' name-of-some-view ') else: form = ChildForm(initial={'parent' :parent}) # …

Nota : en caso de una solicitud POST exitosa, debe realizar una redirect [Django-doc] para implementar el patrón Publicar/Redireccionar/Obtener [wiki] . Esto evita que realice la misma solicitud POST cuando el usuario actualiza el navegador.


Nota : Las funciones normalmente se escriben en snake_case , no en PascalCase , por lo tanto, es recomendable cambiar el nombre de su función a add_child , no a addChild .

over 4 years ago · Santiago Trujillo Relatório
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