如何在 Django rest 框架中的嵌套序列化器上添加过滤器?

时间:2021-07-15 09:18:42

标签: django django-rest-framework

我想从用户序列化器中获取所有用户数据,并在 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)

0 个答案:

没有答案
相关问题