Я хочу обновить его после регистрации изображения, но изображение не появляется всякий раз, когда я его обновляю.
Я делаю функцию обзора, но если я регистрирую картинку в обзоре и обновляю его, картинка не отображается должным образом. Тем не менее, остальное содержимое рецензии обновляется нормально. Я не знаю, почему только картинка не отображается должным образом.
здесь view.py:
def update(request, id):
review = Post.objects.get(id=id)
category = review.postType
placeId = review.placeId
if category == 'cafe':
place = Cafe.objects.get(id=placeId)
elif category == 'accomo':
place = Accomodation.objects.get(id=placeId)
else:
place = Place.objects.get(id=placeId)
if request.method == "POST":
postGood = request.POST["postGood"]
postBad = request.POST["postBad"]
try:
postImage = request.FILES['postImage']
except:
postImage='NULL'
ranking = request.POST["ranking"]
Post.objects.filter(id=id).update(postGood=postGood,postBad=postBad,postImage=postImage,ranking=ranking)
posts = Post.objects.filter(Q(postType=category)&Q(placeId=placeId))
total = 0
len_posts= len(posts)
for p in posts:
total += p.ranking
place.star = total/len_posts
place.save()
return redirect(f"/reviewDetail/{review.id}")
placeName = place.name
location = place.location
context = {"review":review, "placeName":placeName}
return render(request, "reviewUpdate.html", context=context)
здесь update.html:
def update(request, id):
review = Post.objects.get(id=id)
category = review.postType
placeId = review.placeId
if category == 'cafe':
place = Cafe.objects.get(id=placeId)
elif category == 'accomo':
place = Accomodation.objects.get(id=placeId)
else:
place = Place.objects.get(id=placeId)
if request.method == "POST":
postGood = request.POST["postGood"]
postBad = request.POST["postBad"]
try:
postImage = request.FILES['postImage']
except:
postImage='NULL'
ranking = request.POST["ranking"]
Post.objects.filter(id=id).update(postGood=postGood,postBad=postBad,postImage=postImage,ranking=ranking)
posts = Post.objects.filter(Q(postType=category)&Q(placeId=placeId))
total = 0
len_posts= len(posts)
for p in posts:
total += p.ranking
place.star = total/len_posts
place.save()
return redirect(f"/reviewDetail/{review.id}")
placeName = place.name
location = place.location
context = {"review":review, "placeName":placeName}
return render(request, "reviewUpdate.html", context=context)
Create работает хорошо, но на всякий случай... (чтобы исправить обновление) вот view.py:
def create(request,category,category_id):
current_user = request.user
me = User.objects.get(username=current_user)
if category == 'cafe':
place = Cafe.objects.get(id=category_id)
elif category == 'accomo':
place = Accomodation.objects.get(id=category_id)
else:
place = Place.objects.get(id=category_id)
placeName = place.name
location=place.location
if request.method == "POST":
postGood = request.POST["postGood"]
postBad = request.POST["postBad"]
try:
postImage = request.FILES['postImage']
except:
postImage='NULL'
ranking = request.POST["ranking"]
new_post=Post.objects.create(user=me,postType=category,postImage=postImage,postGood=postGood,postBad=postBad,ranking=ranking, placeId=category_id)
posts = Post.objects.filter(Q(postType=category)&Q(placeId=category_id))
total = 0
len_posts= len(posts)
for p in posts:
total += p.ranking
place.star = total/len_posts
place.save()
return redirect(f"/reviewDetail/{new_post.id}")
else:
return render(request, 'reviewWrite.html', {'placeName':placeName,'location':location, 'category':category, 'category_id':category_id})
здесь create.html:
<form action="/create/{{category}}/{{category_id}}" method="POST" enctype="multipart/form-data">
<div class="post_container">
{% csrf_token %}
<div class="post_review">
<p>
<span class="review_span">다녀온 곳 </span> {{placeName}}
</p>
<input type="file" name="postImage" />
<br>
вот модель Post:
class Post(models.Model):
postType = models.CharField(max_length=100, null=True)
postImage= models.ImageField(blank=True, null=True, default="NULL", upload_to='posts/%Y%m%d', verbose_name="사진")
postGood= models.TextField(null=True)
postBad= models.TextField(null=True)
ranking= models.FloatField(null=True, blank=True)
user = models.ForeignKey(User, related_name='user_post', on_delete=models.CASCADE)
placeId = models.IntegerField(null=True)
here is url.py:
path('create/<str:category>/<int:category_id>', views.create, name='create')
path('delete/<int:id>', views.delete, name="delete")
path('update/<int:id>', views.update, name="update")