こんにちは私は自分のブログを構築しています。ブログの投稿に写真を追加しようとしています。今のところ、メディア/ドキュメントフォルダに写真をアップロードできますが、これらの写真を投稿に割り当てるのに問題があります。Djangoモデルのnullableフィールドエラーのエラーメッセージ
これは私のmodels.pyが
post_detail.html{% for document in post.documents.all %}
<div style="padding: 10px;">
<p> {{ document.description }} </p>
<img src=""/>
</div>
{% endfor %}
01の内側
class Document(models.Model):
post = models.ForeignKey('blog.Post', related_name='documents', null = True)
description = models.CharField(max_length=255, blank=True)
document = models.FileField(upload_to='documents/')
uploaded_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.text
forms.py
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
fields = ('description', 'document')
views.py
@login_required
def model_form_upload(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.post = post
form.save()
return redirect('/')
else:
form = DocumentForm()
return render(request, 'blog/model_form_upload.html', { 'form': form })
どのように見えるかです今の
...
{% if user.is_authenticated %}
<a class="btn btn-default" href="{% url 'model_form_upload' pk=post.pk %}">Add photo</a>
{% endif %}
、私は説明をプリントアウトしようとしていると、その後のURLに対処することは容易になります。写真はアップロードされているだけで、投稿には接続されていません。 null = True
を削除すると、コマンドラインでmakemigrationsを渡すことができません。誰でもここに何が間違っていると私を助けることができますか?
編集:それは助けている場合、コメントのクラスが同じコード行を持っていますが、まだうまく動作します:
models.py
class Comment(models.Model):
post = models.ForeignKey('blog.Post', related_name='comments')
author = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
approved_comment = models.BooleanField(default=False)
def approve(self):
self.approved_comment = True
self.save()
def __str__(self):
return self.text
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('author', 'text')
おかげでたくさん!どのように画像を表示する上で任意のアイデア?私はURLにアクセスする必要がありますが、どうすればいいですか?ファイルはアップロードされているのと同じ名前で現在保存されていますが、何らかの形式で保存してからHTMLタグに渡す必要がありますか? – Deniz
''私は写真を含めるようにしましたが、代わりにひびの入った画像があります – Deniz
画像をアップロードしたいだけなら、 'FileField'の代わりに' ImageField'を使うことができます。 「」 – afilardo