2010-11-17 20 views
1

我正在使用django評論(http://code.google.com/p/django-reviews/)並且無法設置評論的內容類型。簡單的例子:Django評論:無法設置內容類型

def check_review(request): 
    if request.method == 'POST': 
     reviewed_item = get_object_or_404(MyModel, pk=request.POST['object_pk']) 
     review_form = ReviewForm(target_object=reviewed_item, data=request.POST) 
     review_form.content_type = ContentType.objects.get_for_model(MyModel) 

然而形式的「CONTENT_TYPE」字段沒有價值和形式具有 錯誤「(隱藏字段CONTENT_TYPE)此字段是必需的。」我 試圖設置content_type多種方式沒有運氣。有任何想法嗎?

回答

0

我發現,您可以設置表單值與

review_form.base_fields["content_type"] = ... 

雖然這仍似乎沒有爲CONTENT_TYPE工作。這實際上是我的錯誤。我打算在表單驗證之後實例化一個Review對象,並在該對象上設置content_type。更容易。

0

爲了澄清,我假設您看到顯示的表單,您將其填入值並嘗試提交。此時,您會看到表單驗證錯誤,表明您需要填充隱藏字段。是否正確?

如果是這樣,您需要在提交之前在表單上設置content_type。通常我做這樣的事情:

def check_review(request): 
    if request.method == 'POST': 
     reviewed_item = get_object_or_404(MyModel, pk=request.POST['object_pk']) 
     review_form = ReviewForm(target_object=reviewed_item, data=request.POST) 
     if review_form.is_valid(): 
      # do some processing here 
    else: 
     # We're just getting an unbound form 
     reviewed_item = get_object_or_404(MyModel, pk=request.POST['object_pk']) 
     review_form = ReviewForm(target_object=reviewed_item, data=request.POST) 
     review_form.content_type = ContentType.objects.get_for_model(MyModel) 
    # return with review_form in the template's context or what have you 
+0

我實際上使用它來記錄用戶的星級評分。星級和用戶會發布,然後我想在check_review函數中填寫其餘的數據(content_type等)。我用django的評論像這樣分配了content_type,但它似乎沒有與django-reviews一起工作。 – Ian 2010-11-18 17:49:02