Трудности при создании сериализованного поля

Я новичок в Django и вообще в веб-разработке. Я пытаюсь сделать так, чтобы у каждого предмета одежды был тип одежды.Тип одежды - это Модель, потому что пользователи могут добавлять и удалять типы одежды по своему усмотрению. Но, как вы можете видеть в моем тесте, простое указание имени типа одежды не работает. Я пытался понять, как сериализовать поле.

У меня есть такой тест:

    def test_add_clothingitems_ok(self):
    token = self.get_token()
    res = self.client.post('/api/clothing/',
        data=json.dumps({
            'id':1,
            'name':"fav blue shirt",
            'location':"bottom drawer",
            'last_worn':"2022-08-15",
            'clothingType': "shirt",
            'image': 'blueshirt.jpeg',
        }),
        content_type='application/json',
        HTTP_AUTHORIZATION=f'Bearer {token}')

    self.assertEquals(res.status_code, 201)
    result = json.loads(res.content)['data']
    self.assertEquals(result['name'], 'fav blue shirt')
    self.assertEquals(result['location'], 'bottom drawer')
    self.assertEquals(result['clothingType'], 'shirt')
    self.assertEquals(result['last_worn'], '2022-08-15')
    self.assertEquals(result['image'], 'blueshirt.jpeg')

Это не удается, поскольку "shirt" не является типом одежды.

Мои модели:

class ClothingType(models.Model):
"""Mlodel representing a clothing type."""
name = models.CharField(max_length=30)
help_text = 'Enter the clothing type (e.g. Pants, Shirts)'

def __str__(self):
    """ String for representing the the Model object."""
    return self.name

class Meta:
    ordering = ['-id']

class ClothingItem(models.Model):
"""Model representing a clothing item"""
name = models.CharField(max_length=50)
location = models.CharField(max_length=50,blank=True)
# ForeignKey used because a clothing item can only have one
# clothing type, but clothing types can have multiple clothing items
clothingType = models.ForeignKey(ClothingType, on_delete=models.CASCADE)
last_worn = models.DateField()
# ForeignKey used because a clothing item can only have one user, but
# a user can have multiple clothing items
user = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(upload_to="./static/images")

class Meta:
    ordering = ['-id']

def __str__(self):
    """ String for representing the the Model object."""
    return self.name

Мои сериализаторы:

class ClothingItemSerializer(serializers.ModelSerializer):
# id = serializers.IntegerField(read_only=True)
# name = serializers.CharField()
# location = serializers.CharField()
# last_worn = serializers.DateField()
#user = serializers.CharField(read_only=True, source='user.username')
# image = serializers.ImageField()
#namelist = [i.name for  i in ClothingType.objects.all()]
clothingType = serializers.CharField(source="clothingType", read_only=True)          
class Meta:
    model = ClothingItem
    fields = ['id','name','location','last_worn','clothingType','image']

Я запутался в том, как передать значение типа одежды через JSON.

Здесь не получается:

    try:
    clothingitem.name = name
    clothingitem.location = location
    clothingitem.last_worn = last_worn
    clothingitem.image = image
    clothingitem.clothingType = clothingType
    
    clothingitem.save()
Вернуться на верх