模型.py
class PostModel(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
date_time = models.DateTimeField(auto_now_add=True)
title = models.TextField(null=True)
body = models.TextField(null=True)
def __str__(self):
return str(self.user)
class ImagesPostModel(models.Model):
post = models.ForeignKey(PostModel, on_delete=models.CASCADE)
images = models.ImageField(null=True, blank=True)
視圖.py
def post(request):
post = PostModel(user=request.user)
post.save()
if request.method == 'POST':
form = PostModelForm(request.POST, instance=post)
images = request.FILES.getlist('images')
for image in images:
ImagesPostModel.objects.create(post=post, images=image)
if form.is_valid():
form.save()
return redirect('/Blog/home/')
else:
form = PostModelForm(request.POST)
return render(request, 'post.html', {'form': form})
我創建了一個 PostModel 物件 post 并使用 save() 方法將其保存在資料庫中。我已經在表單中提供了實體引數作為 post 物件,因此表單應該更新上面創建的帖子,但它正在創建另一個 PostModel 物件并自行插入到資料庫中。所以有兩個帖子開始創建并插入到資料庫中,第一個是因為 post = PostModel(user=request.user) 而我不知道為什么要創建第二個。為什么會這樣?

uj5u.com熱心網友回復:
問題是視圖中的前 2 行
post = PostModel(user=request.user)
post.save()
當他們使用 user=currentuser 創建 PostModel obj
要將帖子添加到用戶,請執行以下操作,而不是form.save()
post = form.save(commit=False)
post.user = request.user
post.save()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/425173.html
上一篇:如何阻止此欄位集溢位其容器?
