简介:
我想重写自定义ModelForm中的save()方法,以便在模型中创建新行或更新某些数据(如果存在)。我已经找到了一些解决方案,但是它是在视图函数中实现的,比如这个link Django form INSERTs when I want it to UPDATE,但是我想以save()方法的形式实现它。在
我的模型:
我有默认值授权用户模型和我的作者模型如下所示,我还有另一个名为UserAuthor的模型,用于它们之间的多个关系,因为在我的案例中,添加其他字段如“is_follow”和“review”是强制的class Author(models.Model):
name = models.CharField(max_length=50)
class UserAuthor(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
is_follow = models.BooleanField(default=0)
review = models.TextField(max_length=500, blank=True, null=True)
我的表格:
^{pr2}$
我的观点:class ReviewFollowAuthor(View):
def post(self, request, **kwargs):
user = request.user
author = get_object_or_404(Author, id=kwargs['pk'])
f = ReviewFollowAuthorForm(request.POST)
if(f.is_valid()):
f.save(user=user,userx=userx)
return JsonResponse({'success':1})
else:
return JsonResponse({'success':0})
在这种情况下,它在数据库中为每个save()调用创建一个新行。我不知道如何在保存之前签入save方法,只是更新以防请求者用户与作者的前一行,我尝试了很多方法,但是失败了。我知道我可以使用:user_author = UserAuthor.objects.filter(user=user, author=author)
并在返回结果时进行更新,但save()方法本身如何?