通过Django模板中的视图传递变量

时间:2012-06-30 19:11:37

标签: python django view django-templates arguments

试图弄清楚如何在Django模板系统中访问我的变量。我的models.py:

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

我的观点:

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

我希望能够在我的模板中访问{{ subcategory }},但由于我视图中的错误而导致错误:'subcategory' is an invalid keyword argument for this function。任何建议将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

该错误并非来自您的模板,并且与您的问题没有任何关系。 subcategory是一个ManyToMany关系,你无法在对象实例化中定义它们,因为这种关系是通过链接表实现的 - 你需要先保存Category和Subcategory对象。

本教程将全面回答您关于如何将对象传递给模板的实际问题的答案。