【问题标题】:What is the best way to perform record changes on post in Django?在 Django 中对帖子执行记录更改的最佳方法是什么?
【发布时间】:2019-08-25 21:40:57
【问题描述】:

我对 python 很陌生,我的后端体验只包括 Java,老实说,我对 python 的方便程度感到非常震惊,尤其是 DRF。我在项目中使用的是Django rest框架,但它越来越大,我必须提供更强大的api。

有一个插入记录的功能,为此我使用 DRF。现在我要介绍另一种插入一条记录的功能,但是在插入后我必须在其他记录中增加一些值,DRF 也可以处理吗?

提前致谢

【问题讨论】:

  • 如果您使用的是子类CreateModelMixin 的视图并在调用super() 之后插入记录,则可以覆盖create 方法
  • 如果值/实例在创建模型实例时总是插入,那么你可以使用post_save signal

标签: python django rest django-rest-framework


【解决方案1】:
  1. 更改 Post 视图中的 create 操作方法,成功插入新记录后,手动更新另一个模型实例。
def create(self, request, pk=None):
    with transaction.atomic():
        # pass
        return Response({
            'message': 'ok'
        })
  1. 使用receiver,为你的post模型注册一个receiver,一旦它检测到有新的插入,你可以做任何你想做的事情:
@receiver(post_save, sender=ColumnArticle)
def article_receiver(sender, instance: ColumnArticle = None, created=False, **kwargs):
    if created: # once create
        # do something over here

【讨论】:

    猜你喜欢
    • 2019-09-12
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多