Невозможно выполнить операцию Insert в CRUD

Я делаю CRUD цветов с color_name и color_description.При попытке вставить детали возникает ошибка :{'color_name': [ErrorDetail(string='Incorrect type. Ожидалось значение pk, получено str.', code='incorrect_type')]}

ниже приведена функция вставки и показа, которую я опробовал

def show_colors(request):
    showcolors = Colors.objects.filter(isactive=True)
    print(showcolors)
    serializer = ColorsSerializer(showcolors,many=True)
    print(serializer.data)
    return render(request,'polls/show_colors.html',{"data":serializer.data})

def insert_colors(request):
    if request.method == "POST":
        insertcolors = {}
        insertcolors['color_name']=request.POST.get('color_name')
        insertcolors['color_description']=request.POST.get('color_description')
        form = ColorsSerializer(data=insertcolors)
        if form.is_valid():
            form.save()
            print("hkjk",form.data)
            messages.success(request,'Record Updated Successfully...!:)')
            return redirect('colors:show_colors')
        else:
            print(form.errors)
            return redirect('colors:show_colors')
    else:
        insertcolors = {}
        form = ColorsSerializer(data=insertcolors)  
        if form.is_valid(): 
            print(form.errors)   
        return render(request,'polls/insert_colors.html')

модель

class Colors(models.Model):
    color_name = models.ForeignKey(Products, on_delete=models.CASCADE,default=None)
    color_description = models.CharField(max_length=10)
    isactive = models.BooleanField(default=True)

html of insert_color

<tr>
                        <td>Colors Name</td>
                        <td>
                            <input type="text" name="color_name" placeholder="COLORS">
                        </td>
                    </tr>
                    <tr>
                        <td>Colors Description</td>
                        <td>
                            <textarea name="color_description" id="" cols="30" rows="10">

                            </textarea>
                        </td>
                    </tr>

html показать цвет

<td><b>{{result.color_name}}</b></td>
          <td><b>{{result.color_description}}</b></td>

Я проверил присвоенные имена, они совпадают, так где же я ошибаюсь?

согласно вашей модели, color_name является внешним ключом, но каким-то образом ваш запрос, похоже, отправляет строку вместо int, что вызывает несоответствие.

посмотрите на свою модель, вы увидите, что color_name является foreignkey вы должны дать ему объект, а не string вы можете отредактировать ваш ColorsSerializer для работы с атрибутами foreignkey так вы сможете добавить strings

Вернуться на верх