2017-07-14 12 views
0

親投稿者のページを子投稿ページに渡すために、このanswerのガイドラインに従っています。現時点では動作していませんが、次のログが表示されています。親モデルのdjango createフォームに事前入力する

[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 ATE/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

申し訳ありませんが、私は今質問を転記していた時点から誤っていました。 –

関連する問題