2017-07-14 42 views
0

我曾爲了父母PK傳遞給孩子創建頁面,隨後從該answer的準則。目前,雖然它不工作,我看到以下日誌。預填充兒童模特Django的創建形式與家長的ID

[14/Jul/2017 13:15:37] "POST /catalog/productstatus/2/create/ HTTP/1.1" 200 4001 

我不知道我在做什麼錯了,這裏是我目前擁有的代碼。

模式

Models.py 

class Product(models.Model): 
    serial_number = models.CharField(unique=True, max_length=15) 

class ProductStatus(models.Model): 
    serial_number = models.ForeignKey('Product', on_delete=models.CASCADE, null=True) 
    status = models.CharField(max_length=20, blank=True, default='Stock', help_text='Products status') 
    date = models.DateTimeField(auto_now_add=True) 

查看

class ProductStatusCreate(CreateView): 
    model = ProductStatus 
    template_name = 'catalog/productstatus_create.html' 
    form_class = ProductStatusModelForm 

    def form_valid(self, form): 
     productstatus = form.save(commit=False) 
     product_id = form.data['product_id'] 
     product = get_object_or_404(Product, id=product_id) 
     productstatus.product = product 
     return super(ProductStatusCreate, self).form_valid(form) 

    def get_context_data(self, **kwargs): 
     context = super(ProductStatusCreate, self).get_context_data(**kwargs) 
     context['s_id'] = self.kwargs['product_id'] 
     return context 

    def get_success_url(self): 
     if 'product_id' in self.kwargs: 
      product = self.kwargs['product_id'] 
     else: 
      product = self.object.product.pk 
     return reverse_lazy('product_detail', kwargs={'pk': product}) 

形式

class ProductStatusModelForm(forms.ModelForm): 

    class Meta: 
     model = ProductStatus 
     fields = ['status',] 

    def __init__(self, *args, **kwargs): 
     self.fields["product"] = forms.CharField(widget=forms.HiddenInput()) 
     super(ProductStatusModelForm, self).__init__(*args, **kwargs) 

TEMPL阿泰/ MYAPP/product_detail.html

<a href="{% url 'productstatus_create' product_id=product.id %}">New</a> 

urls.py

urlpatterns += [ 
url(r'^productstatus/(?P<product_id>\d+)/create/$', views.ProductStatusCreate.as_view(), name='productstatus_create'), 
] 

productstatus_create.html

{% extends "base_generic.html" %} 
{% block content %} 


<h2>New Product Status</h2> 
</br> 
<form action="" method="post"> 

    {% csrf_token %} 
    <table> 
    <input type=hidden id="id_product" name="product" value="{{ s_id }}"> 
    {{ form }} 
    </table> 
    <input type="submit" value="Submit" /> 
</form> 
</br> 

{% endblock %} 

當查看頁面源代碼的價值不會得到填充但是當我提交表單時什麼也沒有發生。

回答

0

爲什麼你在你的urls.py有views.ProductInstanceCreate.as_view(),但您展示視圖稱爲ProductStatusCreate?你確定你使用正確的視圖?

+0

對不起,那些從當我錄製現在我已經更新了它的問題錯別字,所以它現在應該都是正確的。 –