Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!