Как связать экземпляр родительской таблицы с новым экземпляром дочерней таблицы через внешние ключи в Django?
Я новичок в Django и reactJS. Я создаю модели с отношениями по внешнему ключу в моделях Django. Но когда я отправляю данные из React в мой Django rest API, он создает родительский объект таблицы на основе значения внешнего ключа вместо того, чтобы ассоциировать его с существующим значением. Как я могу ассоциировать с вновь созданным дочерним экземпляром вместо создания родительского объекта?
Я ищу уже 2 дня, но ничего не помогло. Что я делаю не так?
Это дает мне такой заголовок ответа в моем приложении reactJS:
{"store_title":[" данные магазина с таким названием уже существуют."]}
Мои модели:
def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT / user_<id>/<filename>
return 'user_{0}/{1}'.format(instance.user, filename)
class StoreData(models.Model):
STATUS=(
('A','Active'),
('P','Pending approval'),
('B','Blocked'),
)
store_title=models.CharField(max_length=50,primary_key=True, null=False)
tagline=models.CharField(max_length=100,null=False, default='')
store_type=models.CharField(max_length=10,null=False, default='')
description=models.CharField(max_length=500,null=False, default='')
user=models.ForeignKey(User,on_delete=models.CASCADE,null=True)
logo_img=models.ImageField(upload_to=user_directory_path, default='')
brand_img=models.ImageField(upload_to=user_directory_path, default='')
link=models.CharField(max_length=100, default='')
date_created=models.DateField(default=timezone.now)
status=models.CharField(max_length=20,choices=STATUS,default='A')
def __str__(self):
return str(self.store_title)
class Categories(models.Model):
title=models.CharField(max_length=50, default='none')
thumbnail_img=models.ImageField(upload_to=user_directory_path, default="")
store_title=models.ForeignKey(StoreData, on_delete=models.CASCADE, default='')
def __str__(self):
return str(self.title)
Моими сериализаторами являются:
class StoreSerializer(serializers.ModelSerializer):
class Meta:
model = StoreData
fields = '__all__'
class CategorySerializer(serializers.ModelSerializer):
def __init__(self, data):
self.store_title=serializers.SlugRelatedField(queryset=StoreData.objects.filter(pk=data['store_title']))
class Meta:
model = Categories
fields = '__all__'
А мой rest API:
@api_view(['POST'])
def addCategory(request):
serializer=CategorySerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response("success", status.HTTP_200_OK)
else:
return Response(serializer.errors,status.HTTP_405_METHOD_NOT_ALLOWED)
И я отправляю запрос из React следующим образом:
function handleSubmit(e) {
e.preventDefault()
let category_data = new FormData()
category_data.append('title', title)
category_data.append('thumbnail_img', selectedThumb_Img)
category_data.append('store_title', JSON.parse(localStorage.getItem('store_data')).title)
fetch('http://localhost:8000/store_apis/addCategory/', {
method: 'Post',
body: category_data
})
.then(res => {
if (res.status !== 200)
document.getElementById('text-error').innerHTML = res.Text
else {
navigate('/categories')
}
})
.catch((res) => document.getElementById('text-error').innerHTML = res.statusText)
}
Как я могу связать существующий родительский экземпляр с вновь созданным дочерним экземпляром?
Спасибо