AttributeError в collections.OrderedDict объект не имеет атрибутов 'groups' - PullRequest
0 голосов
/ 07 августа 2020

Я создал модель агента, которая расширяется от пользователя по умолчанию 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()

сериализаторы .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, я продолжайте получать ошибку AttributeError в / agent / 'collections.OrderedDict' объект не имеет атрибутов 'groups'

Что я делаю не так?

...