【发布时间】:2017-06-27 07:53:51
【问题描述】:
我有一个项目。一个项目可以有很多评论。我希望在项目的上下文中创建评论。因此,我从 url 中捕获 pk 并将其添加到上下文中。
这就是我卡住的地方,我不确定如何访问 form_valid 中的上下文,更重要的是,我担心我要走的路看起来很糟糕。
基本上当用户准备提交评论时,应用程序将知道它所引用的项目。最pythonic/django-onic 的方式是什么?
型号
class Item(models.Model):
name = models.CharField(max_length=100)
source = models.ForeignKey('Source')
class Review(models.Model):
rating = models.CharField(max_length=30)
value = models.CharField(max_length=30)
date = models.DateField(auto_now_add=True)
comment = models.CharField(blank=True,max_length=100)
item = models.ForeignKey(Item,blank=True)
user = models.ForeignKey(User)
网址
url(r'^review/create/item/(?P<itempk>\d+)',views.ReviewCreate.as_view(),name='review_create'),
观看次数
class ReviewCreate(CreateView):
model = Review
fields = ['rating', 'value', 'comment']
def get_context_data(self, **kwargs):
context = super(ReviewCreate, self).get_context_data(**kwargs)
itempk = self.kwargs['itempk']
item = get_object_or_404(Item, pk=itempk)
context['item'] = item
return context
def form_valid(self, form):
review = form.save(commit=False)
review.user = self.request.user
context = super(ReviewCreate, self).get_context_data(**kwargs) '''doesn't work'''
review.item = context['item']
return super(ReviewCreate, self).form_valid(form)
template_name = 'food/review_form.html'
【问题讨论】:
标签: python django python-2.7 django-views