class ProductSerializer(serializers.ModelSerializer): category = CategorySerializer(many=True, required=False, read_only=True) category_ids = serializers.PrimaryKeyRelatedField(source='category', many=True, queryset=Category.objects.all()) created_by = UserDetailsSerializer(required=False) updated_by = UserDetailsSerializer(required=False) deleted_by = UserDetailsSerializer(required=False) class Meta: model = Product fields = ( "id", "name", "category_ids", "category", "description", "price", "quantity", "created_at", "created_by", "updated_at", "updated_by", "deleted_at", "deleted_by", ) # depth = 1 def create(self, validated_data): categories = validated_data.pop("category") product = super().create(validated_data) for item in categories: product.category.add(item) return product def update(self, instance, validated_data): categories = validated_data.pop("category") instance = super().update(instance, validated_data) instance.category.set(categories) return instance
def test_validate_username_without_all_auth(self): serializer = UserDetailsSerializer( self.user, data={'username': '******'}, partial=True, ) self.assertEqual(True, serializer.is_valid()) self.assertEqual(serializer.validated_data, {'username': '******'})
def test_validate_username_with_all_auth_failure(self): serializer = UserDetailsSerializer( self.user, data={'username': '******'}, partial=True, ) self.assertEqual(False, serializer.is_valid()) self.assertEqual( serializer.errors, { 'username': [ ErrorDetail(string='username must be lower case', code='invalid'), ], }, )
def test_validate_username_with_all_auth_failure(self): serializer = UserDetailsSerializer( self.user, data={"username": "******"}, partial=True ) self.assertEqual(False, serializer.is_valid()) self.assertEqual( serializer.errors, { "username": [ ErrorDetail(string="username must be lower case", code="invalid") ] }, )
class CategorySerializer(serializers.ModelSerializer): created_by = UserDetailsSerializer(required=False) updated_by = UserDetailsSerializer(required=False) deleted_by = UserDetailsSerializer(required=False) class Meta: model = Category fields = ( "id", "name", "created_at", "created_by", "updated_at", "updated_by", "deleted_at", "deleted_by", )
class KnoxSerializer2(serializers.Serializer): """ thanks rando github person """ user = UserDetailsSerializer() token = serializers.SerializerMethodField() def get_token(self, obj): return obj["token"][1]
def test_validate_username_with_all_auth_success(self): serializer = UserDetailsSerializer( self.user, data={"username": "******"}, partial=True ) self.assertEqual(True, serializer.is_valid()) self.assertEqual(serializer.validated_data, {"username": "******"})