首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DRF:在另一个模型、序列化程序或视图中更新模型

DRF:在另一个模型、序列化程序或视图中更新模型
EN

Stack Overflow用户
提问于 2022-02-11 17:37:10
回答 1查看 469关注 0票数 0

因此,我有一个与欧文斯(ManyToMany)、学生和工作人员相关的用户和学校模型,如果所有者注册并创建了一所学校,我希望对request.user的Owens字段执行部分更新,从拥有空/空或以前创建的学校到添加新创建的学校。

用户模型

代码语言:javascript
运行
复制
 class User(AbstractBaseUser, PermissionsMixin):
    
        class SEX(models.TextChoices):
            ...
    
        class TYPES(models.TextChoices):
            ...
    
        ...
        owens = models.ManyToManyField(School, verbose_name=_(
            "School_owner"), related_name='Schoolowner', blank=True)

serializers.py

代码语言:javascript
运行
复制
class SchoolSerializerBase(serializers.ModelSerializer):
    ...

class Meta:
    model = School
    fields = ...

def validate(self, attrs):
     ...
    return attrs

def create(self, validated_data):
    instance = School.objects.create(
        ...
    )
    instance.save()
    return instance

我有一个简单的视图

代码语言:javascript
运行
复制
class CreateSchoolView(generics.CreateAPIView):
    queryset = School.objects.all()
    permission_classes = [IsSchoolOwner, ]
    serializer_class = SchoolSerializerBase

我的问题:如何更新request.user.ownes字段并将学校实例添加到其中??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-11 18:02:04

可以通过在序列化程序中重写.create()来获得该结果。

在您的序列化程序中

代码语言:javascript
运行
复制
def create(self, validated_data):
   instance = super().create(validated_data) # this is the school
   # you then create the entry for your User+School
   # example
   user = self.context['request'].user
   user.owens.add(instance)
   return instance

https://docs.djangoproject.com/en/3.2/ref/models/relations/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71084297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档