Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
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.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

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) ...
about 4 years ago · Santiago Trujillo Denunciar

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.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda