使用 CreateModelMixin.create() 将对象添加到 ManyToMany 字段

D. 制作

mixins.CreateModelMixin.create用来创建对象,但我也需要添加request.user到其中的m2m字段。所以我的想法是从而self.create()不是 fially捕捉对象make obj.users.add(user)但是 CreateModelMixin 只返回responce. 如何从 中获取对象.create添加用户是更好的方法吗?我可以使用super(不擅长)吗?谢谢!

添加:

我可以perform_create()在这里使用和捕获对象,但它会使代码更大并且.create()大部分重复,所以我认为这不是正确的方法。

添加:

我现在使用的代码:

@action(detail=False, methods=['POST'], serializer_class=CompanyAdminSerializer)
def create_company(self, request):
    user = self.request.user
    if user.user_of_company.exists():
        raise NotAcceptable(detail='Only one company allowed')
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    company = serializer.save()
    company.users.add(user)
    company.admin_users.add(user)
    return Response(serializer.data)
聊天时间

要从create那里捕获实例,必须覆盖该create方法。最简单的方法是覆盖该perform_create方法。

.save()返回创建对象的实例。来源

您的代码将如下所示:

#Assuming you're using CreateAPIView
class New_Create(CreateAPIView):
    def perform_create(self, serializer):
        obj = serializer.save()
        #Adding to M2M
        obj.users.add(self.request.user)

DRF 序列化程序不支持开箱即用的M2M 创建/更新

编辑:我不建议覆盖该create方法。perform_create创建方法正是为了达到此目的。只有在.save()被调用后才能访问该实例因此,在调用.save()序列化程序后,您可以根据需要更新实例。访问实例的两种方法是:1) 使用.save方法返回的对象(如上所示) 2) 可以使用serializer.instance。(同样,您只能访问instanceafter.save已被调用。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django,ManyToMany字段,使用额外的字段获取正确的对象

来自分类常见问题

将对象字段添加到列表的最佳方法

来自分类Dev

Json将对象添加到空字段

来自分类Dev

向ManyToMany字段添加UniqueConstraint

来自分类Dev

使用反射将对象动态添加到实体框架

来自分类Dev

使用PHP将对象添加到JSON数组

来自分类Dev

使用传播语法将对象添加到集合元素

来自分类Dev

使用useReducer将对象添加到数组中的数组

来自分类Dev

使用redux将对象添加到数组中的数组

来自分类Dev

如何使用委托将对象添加到NSMutableArray?

来自分类Dev

使用GUI将对象添加到数组列表

来自分类Dev

使用PHP将对象添加到JSON数组

来自分类Dev

如何使用 setState 将对象添加到数组列表

来自分类Dev

使用函数将对象添加到列表中

来自分类Dev

使用 redux 将对象添加到数组

来自分类Dev

Django:使用信号来保存ManyToMany字段

来自分类Dev

从ManyToMany添加admin.py中的字段

来自分类Dev

对 ManyToMany 字段中的对象进行排序

来自分类Dev

如何使用字段名称获取ManyToMany Manager对象

来自分类Dev

在列表中将对象的字段添加到C#中的列表中

来自分类Dev

是否将对象添加到嵌套字段会重新编制索引?

来自分类Dev

使用sprayJSON(scala)将字段添加到现有JSON对象

来自分类Dev

如何使用反射标识列表字段并将新对象添加到该列表?

来自分类Dev

使用括号将带有特殊字符的字段添加到JS对象中

来自分类Dev

如何使用Java将自定义字段添加到Salesforce中的现有对象

来自分类Dev

使用 SprayJSON (scala) 将字段添加到现有的 JSON 对象

来自分类Dev

Django的ManyToMany字段的bulk_create的正确方法?

来自分类Dev

如何使用NODEJS和FileStream将对象追加/添加到JSON对象中的特定对象

来自分类Dev

如何在Django的Manytomany字段中添加对象

Related 相关文章

  1. 1

    Django,ManyToMany字段,使用额外的字段获取正确的对象

  2. 2

    将对象字段添加到列表的最佳方法

  3. 3

    Json将对象添加到空字段

  4. 4

    向ManyToMany字段添加UniqueConstraint

  5. 5

    使用反射将对象动态添加到实体框架

  6. 6

    使用PHP将对象添加到JSON数组

  7. 7

    使用传播语法将对象添加到集合元素

  8. 8

    使用useReducer将对象添加到数组中的数组

  9. 9

    使用redux将对象添加到数组中的数组

  10. 10

    如何使用委托将对象添加到NSMutableArray?

  11. 11

    使用GUI将对象添加到数组列表

  12. 12

    使用PHP将对象添加到JSON数组

  13. 13

    如何使用 setState 将对象添加到数组列表

  14. 14

    使用函数将对象添加到列表中

  15. 15

    使用 redux 将对象添加到数组

  16. 16

    Django:使用信号来保存ManyToMany字段

  17. 17

    从ManyToMany添加admin.py中的字段

  18. 18

    对 ManyToMany 字段中的对象进行排序

  19. 19

    如何使用字段名称获取ManyToMany Manager对象

  20. 20

    在列表中将对象的字段添加到C#中的列表中

  21. 21

    是否将对象添加到嵌套字段会重新编制索引?

  22. 22

    使用sprayJSON(scala)将字段添加到现有JSON对象

  23. 23

    如何使用反射标识列表字段并将新对象添加到该列表?

  24. 24

    使用括号将带有特殊字符的字段添加到JS对象中

  25. 25

    如何使用Java将自定义字段添加到Salesforce中的现有对象

  26. 26

    使用 SprayJSON (scala) 将字段添加到现有的 JSON 对象

  27. 27

    Django的ManyToMany字段的bulk_create的正确方法?

  28. 28

    如何使用NODEJS和FileStream将对象追加/添加到JSON对象中的特定对象

  29. 29

    如何在Django的Manytomany字段中添加对象

热门标签

归档