collections.OrderedDict对象的AttributeError没有属性“ groups”

时间:2020-08-07 10:30:42

标签: django django-models serialization django-rest-framework django-users

我创建了一个从默认Django用户扩展的代理模型。代理模型具有公司属性。现在,在创建新代理时,如果试图添加代理的用户在管理员组中,则公司应该自动完成。我已经写了一些代码,但是我仍然遇到相同的错误,我也不明白为什么。

这是代码:

models.py

class Agent(models.Model):
    class Meta:
        db_table = 'itw_agent'
        verbose_name = 'agent'
        verbose_name_plural = 'agents'

    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
    phone = models.IntegerField()
    deleted = models.BooleanField(default=False)
    company = models.ForeignKey(Company, related_name='agents', on_delete=models.CASCADE)

    def save(self, *args, **kwargs):
        if self.deleted:
            self.user.is_active = False
            self.user.save()
        return super().save()

serializers.py

class AgentSerializer(ModelSerializer):
    user = UserSerializer()
    company_name = SerializerMethodField()

    class Meta:
        model = Agent
        fields = ['user_id', 'user', 'phone', 'company', 'company_name']

    @staticmethod
    def get_company_name(obj):
        return obj.company.name

    def create(self, validated_data):

        # gr = Group.objects.get(name=AGENT)
        # users = User.objects.all()
        # for user in users:
        #     user.groups.add(gr)

        user = validated_data.pop('user')
        new_user = User.objects.create(**user)
        new_user.set_password(user['password'])
        request_user = self.context['request'].user

        if ADMINISTRATOR in user.groups.all().values_list('name', flat=True):
            agent = Agent.objects.create(user=new_user,
                                         company=request_user.company,
                                         phone=validated_data['phone'])
            return agent

        else:
            return Response({'error'}, status=status.HTTP_401_UNAUTHORIZED)

如果我删除了检查用户是否在管理员组中的条件,则当我尝试创建代理时,一切工作正常,只要添加if语句,我就会在/ agents上不断收到错误AttributeError / 'collections.OrderedDict'对象没有属性'groups'

我做错了什么?

0 个答案:

没有答案