嵌套的多选字段在Django和VueJS应用中序列化

问题描述 投票:0回答:1

我有多种选择的嵌套序列化程序,我可以获取该值,但是在补丁调用期间[[主题没有得到更新]

这里用户和主题是两个模型,

**Model.py** class Subject(models.Model): uid = models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True) ENG = "ENGLISH" HND = "HINDI" SUBJECT = ( (ENG, "English"), (HND, "Hindi"), ) subject = models.CharField( max_length=50, choices=SUBJECT, default=ENG) def __str__(self): return self.subject class User(AbstractUser): uid = models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True) TEACHER = "Teacher" STUDENT = "Student" user_type = models.CharField(max_length=30, default=STUDENT) approved = models.BooleanField(default=True) def save(self, *args, **kwargs): if self.user_type == User.TEACHER and self._state.adding: self.approved = False super().save(*args, **kwargs) @property def syllabus(self): ret = self.teacher.syllabus_set.all() if ret: return ret else: return ''

这是我的序列化器调用

**serializers.py** class TeacherProfileDetails(serializers.ModelSerializer): logger = logging.getLogger(__name__) teacher_date = AvailabilityDetails(many=True, read_only=True) first_name = serializers.CharField(source='user.first_name', read_only=True) last_name = serializers.CharField(source='user.last_name', read_only=True) cities = CitySerializer(many=True, read_only=True) subject = serializers.SerializerMethodField() user = UserDetailsSerializer(read_only=True) class Meta: model = Teacher fields = ('user', 'first_name', 'last_name', 'bio', 'teacher_cost', 'subject', 'teacher_date', 'cities') def get_subject(self, obj): subject_list = [] for i in obj.subject.all(): subject_list.append(i.subject) return subject_list

这是我的views.py通话

**views.py** class TeacherListCreateAPIView(APIView): logger = logging.getLogger(__name__) #def create(self, request, *args, **kwargs): def get(self, request, *args, **kwargs): self.logger.info("Geeting TeacherListCreateAPIView information") teacherList = Teacher.objects.filter(user__username=kwargs["username"]) self.logger.info(teacherList) serializers = TeacherProfileDetails(teacherList, many=True) self.logger.info(serializers.data) return Response(serializers.data) def patch(self, request, *args, **kwargs): teacher = Teacher.objects.get(user__username=kwargs['username']) serializers = TeacherProfileDetails(data=request.data, instance=teacher) self.logger.info(serializers) if serializers.is_valid(): serializers.save() return Response(serializers.data, status=status.HTTP_201_CREATED) return Response(serializers.errors, status=status.HTTP_400_BAD_REQUEST)

这里是urls.py

path('teacher/<str:username>/details', TeacherListCreateAPIView.as_view(), name="teacher-details"),

问题:

我能够获得老师的详细信息,但补丁调用不会更新主题,看起来我在序列化主题时在

TeacherProfileDetails

中犯了一些错误
django django-models django-rest-framework django-forms django-serializer
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.