我想从用户序列化器中获取所有用户数据,并在 userhascompany 序列化器中按用户 ID 添加过滤器。
这些是 UserHasCompany 模式、UserListSerializer、api.py
模型.py
class UserHasComapny(models.Model):
company = models.ForeignKey(CompanyDetail, related_name='user_has_company_company', on_delete=models.CASCADE, null=True, unique=False)
user = models.OneToOneField(User, related_name='user_has_company_user', on_delete=models.CASCADE, null=True, unique=False)
department = models.ForeignKey(Department,related_name='user_has_company_department', on_delete=models.CASCADE, null=True, unique=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now_add=True)
class Meta:
db_table = "user_has_company"
default_permissions = ()
serializer.py
class UserListSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'last_login', 'is_superuser', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined', 'status', 'department', 'contact', 'groups')
related_fields = ['status', 'user_has_company_user', 'user_detail', 'groups']
# depth = 1
status = serializers.BooleanField(source='status.status')
contact = serializers.CharField(source='user_detail.contact')
department = UserHasCompanySerializer(source='user_has_company_user',read_only=True)
api.py
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserListSerializer
def get(self, request, format=None):
users = User.objects.all()
serializer = UserListSerializer(users, many=True)
return Response(serializer.data)