在一个用户角色请求中在 django rest api 中插入三个相关模型的最佳方法

问题描述

我有三个用于定义用户角色的模型。每个用户可以有多个角色。在一个请求中将角色作为列表插入并为他们创建用户帐户的最佳方法是什么?

我的模型:

class Account(AbstractBaseUser):
    # django's own fields
    email = models.EmailField(blank=True,null=True,max_length=60,unique=True)
   ....

class Role(models.Model):
    name = models.CharField(max_length=20,verbose_name='اسم رول')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'رول'
        verbose_name_plural = 'رول ها'


class UserRole(models.Model):
    account = models.OnetoOneField(Account,on_delete=models.CASCADE,verbose_name='اکانت',related_name='user_roles')
    roles = models.ManyToManyField(Role,verbose_name='رول')
    is_active = models.BooleanField(verbose_name='فعال')

    def __str__(self):
        return f"{self.account}"

    class Meta:
        verbose_name = 'رول کاربر'
        verbose_name_plural = 'رول های کاربر'

我的序列化程序:

class RoleSerializer(serializers.ModelSerializer):

    class Meta:
        model = Role
        fields = ['id','name']


class UserRoleSerializer(serializers.ModelSerializer):
    roles = RoleSerializer(many=True,read_only=True)

    class Meta:
        model = UserRole
        fields = ['roles','is_active']
        extra_kwargs = {'roles': {'required': False}}


class NewAccountSerializer(serializers.ModelSerializer):
    user_roles = UserRoleSerializer(many=False,read_only=False)

    class Meta:
        model = get_user_model()
        fields = ['phone_number','user_roles',]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)