2017-11-04 8 views
1

form.is_valid()は常に失敗します。私はそれを処理するさまざまな方法を試みたが、毎回失敗し、それはfalseを返します。コードに何が間違っているかを理解するのを手伝ってください。form.is_valid()は常にviews.pyでfalseを返します。

models.pyはこのようになります -

class Album(models.Model): 
    album_name = models.CharField(max_length=50, primary_key=True) 
    place = models.CharField(max_length=50) 
    date_pub = models.DateTimeField('date published') 

    def __str__(self): 
     return self.album_name 

class Images(models.Model): 
    album_name = models.ForeignKey(Album, db_column='album_name') 
    image_name = models.CharField(max_length=40) 
    image = models.FileField(null=True, blank=True) 
    upload_dt = models.DateTimeField(auto_now=True, auto_now_add=False) 
    like_cntr = models.IntegerField(default=0) 
    description = models.CharField(max_length=200, null=True) 

    def __str__(self): 
     return self.image_name 

forms.pyがある -

class ImagesForm(forms.ModelForm): 
    description = forms.CharField(required=False) 

    class Meta: 
     model = Images 
     fields = ('album_name', 'description',) 

views.pyがある -

class RandomView(TemplateView): 
    template_name = 'photos/random.html' 

    def get(self, request, album_name): 
     images = Images.objects.filter(album_name=album_name) 
     context = {'album_name':album_name, 'images' : images} 
     return render(request, 'photos/random.html', context) 

    def post(self, request, album_name): 
     form = ImagesForm(request.POST) 
     if form.is_valid(): 
      form.save(commit=False) 
      text = form.cleaned_data['description'] 
      Images.album_name = album_name 
      form.save() 
     else: 
      return HttpResponse("Failed to save") 

テンプレートである -

<h3>Album : {{album_name }}</h3> 
{% for image in images %} 
<img src="{{image.image.url}}" height="400" width="500"> 
<h4> {{image.image_name }}</h4> 

<form method="POST" action=""> {% csrf_token %} 
    <span class = "badge">Description</span> 
    {% if image.description %} 
     <h4> {{image.description }} </h4> 
    {% else %} 
     <input type="text" value=" "/> 
     <button type="Submit">Submit</button> 
    {% endif %} 
</form> 
{% endfor %} 
+1

なぜフォームに間違っているのを表示させ、テンプレートに戻して 'form.errors'を表示すると、その"役に立たない "メッセージを保存できませんでしたか? –

+1

あなたはフォーム上にimage必須フィールドの何桁も含めていないので、もちろん妥当性は確認されていません。 –

+0

また、手動で行うのではなく、Djangoでフォームフィールドをレンダリングさせることを検討する必要があります。 – solarissmoke

答えて

0

入力タグに必要な名前とID属性はどこですか?

<input type="text" name="description" id="id_description"/> 
+0

ありがとうございました。私はDjangoを初めて使いこなしています。あなたが指摘した部分が私を助けました。私が直面するもう一つの問題は、ModelFormのForeignKeyです。私は、ModelChoiceFieldを使用し、forms.pyの__init__メソッドをオーバーライドするソリューションを得ました。しかし、まだいくつかの問題が存在します。 – Maneesha

+0

@Maneeshaとどのような問題? – catscoolzhyk

0

「フォーム」タグの上に{{ form.errors }}とお試しください。そして、まず、エラーが何に到着したかを確認します。次に、そのエラーに基づいて解決策を見つけます。それが有用かどうか私に教えてください。

関連する問題