pythonsave函数_重写Django ModelForm中的save()方法以创建或升级

简介:

我想重写自定义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()方法本身如何?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值