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

188
Views
Opciones de formulario generadas dinámicamente en Django

Tengo un formulario para enviar nuevos artículos en Django, en este formulario se le permite colocar la publicación en un 'user_group', solo una relación de muchos, muchos entre grupos y usuarios. Sin embargo, solo puede agregarlo a los grupos a los que pertenece. Usando la función de inicio de la clase de formulario, puedo pasar un campo adicional, y obtengo las opciones correctas que necesito, sin embargo, al enviar, aparece el error "QueryDict" El objeto no tiene el atributo "todos".

No estoy seguro de lo que va mal, aquí está mi formulario:

 class PostForm(BaseModelForm): new_image = forms.ImageField(required=False) #GROUPS = user.groups.all() #group = forms.ChoiceField(choices=GROUPS, required=False ) def __init__(self,groups, *args, **kwargs): super(PostForm, self).__init__(*args, **kwargs) self.fields['group'].queryset = groups class Meta: model = Post fields = ('title','category', 'group', 'text', 'description', 'style') help_texts = { 'group': _('Do you want this published under your account or a group?') }

y aquí está la vista donde se arroja el error:

 @login_required def post_new(request): if request.method == "POST": form = PostForm(request.POST, request.FILES) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.save() return redirect('post_detail', pk=post.pk) else: form = PostForm(groups=request.user.user_groups.all()) return render(request, 'blog/post_edit.html', {'form': form})

Esta línea:

 form = PostForm(groups=request.user.user_groups.all())

Es donde paso las opciones para grupos, lo que te da las opciones correctas. El hecho de que el error ocurra al enviar me hace pensar que es un error en la forma en que la vista lo procesa, pero no estoy seguro de dónde.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Debe pasar groups al formulario para solicitudes GET y POST . Por el momento, solo lo está haciendo para solicitudes GET. Debería ser

 if request.method == "POST": form = PostForm(request.user.user_groups.all(), request.POST, request.FILES) ...
over 4 years ago · Santiago Trujillo Report

0

Creo que tienes que consultar los grupos en el formulario:

 class PostForm(models.ModelForm): group = forms.ChoiceField(queryset = None) def __init__(self,groups, *args, **kwargs): super(PostForm, self).__init__(*args, **kwargs) self.fields['group'].queryset = request.user.user_groups.all()

https://docs.djangoproject.com/en/1.11/ref/forms/fields/#fields-which-handle-relationships

Es importante definir queryset como Ninguno, y en __init__ realizar la consulta cuando se crea la instancia del formulario.

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!