Невозможно выполнить операцию 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