Мой проект о системе университета.2 Пользовательские пользователи с именами Student и Professor определены, что наследует от Django User Model.Существует модель курса, которая имеет отношение ManyToMany
к модели профессора, чтобы определить курсы и определить профессора для каждого курса.Я использовал CreateMixinModel
, UpdateMixinModel
, DestroyMixinModel
для обновления, создания и удаления курсов.CRUD был применен правильно.Но возникла проблема с отображением информации профессора, и она просто вернула идентификатор профессора.Я использовал вложенный сериализатор в CourseCreateSErializer для отображения информации о профессоре рядом с информацией о курсе.И теперь я не могу редактировать объект курса.
Я хочу иметь возможность редактировать объект курса
models.py
:
class Professor(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
professor_no = models.PositiveIntegerField()
def get_full_name(self):
return self.user.first_name
def __unicode__(self):
return self.user.first_name + " " + self.user.last_name
def __str__(self):
return self.user.first_name + " " + self.user.last_name
class Course(models.Model):
professor = models.ManyToManyField(Professor)
name = models.CharField(max_length=100)
unit = models.PositiveIntegerField()
serializers.py
:
class CustomUserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ('first_name',
'last_name',
'identity_no',
'email')
def create(self, validated_data):
return CustomUser.objects.create(**validated_data)
class ProfessorDetailSerializer(serializers.ModelSerializer):
user = CustomUserSerializer()
class Meta:
model = Professor
fields = (
'user',
'professor_no'
)
def create(self, validated_data):
return CustomUser.objects.create(**validated_data)
class CourseDetailSerializer(serializers.ModelSerializer):
professor =ProfessorDetailSerializer(many=True)
class Meta:
model = Course
fields = (
'professor',
'name',
'unit',
)
view.py
:
class CourseDetailView(DestroyModelMixin, UpdateModelMixin, RetrieveAPIView):
queryset = Course.objects.all()
serializer_class = CourseDetailSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)