示例#1
0
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': '******'})
示例#3
0
 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")
             ]
         },
     )
示例#5
0
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",
        )
示例#6
0
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": "******"})