Прошу о помощи
Взгляните на скрин пожалуйста, не могу понять почему не могу добавлять links динамически
**Вот такой вид данных формата Json должен получиться:
values {
"firstname": "l",
"lastname": "m",
"links": [
{
"linkname": "https://www.youtube.com/",
"linkurl": "https://www.youtube.com/"
},
{
"linkname": "https://www.youtube.com/",
"linkurl": "https://www.youtube.com/"
}
]
}
И к тому же даже если вот эти все существующие поля заполнить(ну то есть те поля, которые уже есть в django rest framework, а именно - один массив links и Имя вместе с Фамилией) выводится ошибка:
The .create() method does not support writable nested fields by default. Write an explicit .create() method for serializer schedule.serializers.WorkSuperSerializer, or set read_only=True on nested serializer fields.
Я перебирала очень много вариантов решения проблемы, например объявляла метод
create():
def create(self, validated_data):
links_data = validated_data.pop('links')
worksuper = WorkSuper.objects.create(**validated_data)
for link_data in links_data:
Link.objects.create(worksuper=worksuper, **link_data)
return worksuper
Но ошибка как была, так и есть.
Вообще вот мой код:
Models.py:
class WorkSuper(models.Model):
firstname = models.CharField("Имя", max_length=10, blank=True)
lastname = models.CharField("Фамилия", max_length=30, blank=True)
class Link(models.Model):
links = models.ForeignKey(WorkSuper, related_name='links', on_delete=models.CASCADE, blank=True)
linkname = models.CharField("linkname", max_length=100, blank=True)
linkurl = models.CharField("linkurl", max_length=100, blank=True)
Serializers.py:
class WorkSuperSerializer(serializers.ModelSerializer):
links = LinkSerializer()
class Meta:
model = WorkSuper
fields = ('firstname', 'lastname', 'links')
# depth = 1
def create(self, validated_data):
links_data = validated_data.pop('links')
worksuper = WorkSuper.objects.create(**validated_data)
for link_data in links_data:
Link.objects.create(worksuper=worksuper, **link_data)
return worksuper
# def to_representation(self, instance):
# data = super().to_representation(instance)
# data['links']['links'] = instance.inner.link
# # return super().to_representation(instance)
# return data
Views.py:
class WorkSuperView(viewsets.ModelViewSet):
serializer_class = WorkSuperSerializer
def get_queryset(self):
queryset = WorkSuper.objects.all()
return queryset
def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
serializer = self.serializer_class(queryset, many=True)
data = serializer.data
# return JsonResponse({'data': data})
return Response(serializer.data)
Еще хочу сказать вам, что получается вот такой json при заполнении формы(скрин ниже), то есть links пустые(((
Я надеюсь на помощь, потому что уже долго не могу разобраться.(((
Заранее спасибо Помогите пожалуйста
\Я действительно очень очень долго уже не могу с этим справиться, перечитала уже просто все.
Мне просто нужна помощь того, кто поумнее