Pasar variables a través de vistas en la plantilla de Django

Tratando de averiguar cómo acceder a mis variables en el sistema de plantillas de Django. Mis modelos.py:

class SubCategory(models.Model):
   name = models.CharField(max_length=50, unique=True)
   category = models.ManyToManyField(Category)

Mi vista:

from myapp.models import Category, SubCategory

def create_in_category(request, slug):
   category = get_object_or_404(Category, slug=slug)
   subcategory = SubCategory()

   ad = Ad.objects.create(category=category, subcategory=subcategory, user=request.user,
                       expires_on=datetime.datetime.now(), active=False)
   ad.save()
   return redirect('myapp_create_ad_edit', pk=ad.pk)
...

class AdCreationEditView(AdEditView):
   def get_queryset(self):
       qs = super(AdEditView, self).get_queryset()
       return qs.filter(active=False, user=self.request.user)

   def get_success_url(self):
       return reverse('classifieds_create_ad_preview',
                      kwargs=dict(pk=self.object.pk))

   def get_context_data(self, **kwargs):
       context = super(AdCreationEditView, self).get_context_data(**kwargs)
       context['create'] = True
       return context

Quiero poder acceder {{ subcategory }} en mi plantilla, pero resulta en un error: 'subcategory' is an invalid keyword argument for this function debido a un error en mi opinión. Cualquier sugerencia sería muy apreciada. Gracias

preguntado el 30 de junio de 12 a las 20:06

¿Dónde estás usando una plantilla? No veo ninguna representación de plantilla aquí. -

Que es realmente representación esa plantilla, sin embargo? La función que enumeró solo redirige, no representa nada. -

Esa no es la vista donde renderizas la plantilla. Estás redirigiendo, no renderizando. -

1 Respuestas

Ese error no proviene de su plantilla y no tiene nada que ver con su pregunta. subcategory es una relación ManyToMany, y no puede definirlos en la creación de instancias de objetos debido a la forma en que dicha relación se implementa a través de la tabla de vinculación: primero debe guardar los objetos Categoría y Subcategoría.

La respuesta a su pregunta real sobre cómo pasar objetos a la plantilla se responde completamente en el tutorial.

Respondido el 30 de junio de 12 a las 21:06

Gracias por su respuesta. Sí, he leído el tutorial varias veces y el djangobook. Si bien he leído la documentación, no comprendo completamente cómo aplicarla a mi escenario, por lo que esperaba otro par de ojos. He intentado usar el acceso subcategory = get_list_or_404(Subcategory), pero aún no estoy seguro de cómo definir correctamente los elementos dentro de mi vista. Gracias por cualquier idea. - Nick B.

Realmente no sé cómo responderte. Tiene dos problemas principales: en primer lugar, el mensaje de error, que le impide crear los objetos de categoría/subcategoría en primer lugar; y en segundo lugar, confusión sobre cómo pasar cosas a la plantilla. Primero debe demostrar que solucionó el primero, luego tal vez podamos aclarar cualquier confusión restante sobre las plantillas. - daniel rosaman

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.