我创建了一个从默认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'
我做错了什么?