我目前正在开发一个使用Python和Django的辅导API。我想让tutor Model显示所有的被辅导者(是的,这是一个单词),以及显示辅导者的辅导者。现在,它工作正常,但它引用了模型的id/pk,所以我真的不知道它指的是谁或什么。
找一个tutee:
{
"id": 1
"full_name": "First Last",
"email": "email@emailprovidercom",
"tutor": 1,
"subjects": "SubjectX"
}正如你所看到的,导师是一个数字而不是一个名字。
找一位家教:
{
"id": 1,
"full_name": "First Last",
"email": "name.name@emailprovider.com",
"notes": "XXXXX XX XX X X X X X X XXXXXX XX X X X X ",
"tutees": [
1
]
}同样的事情也发生在这里。
我使用的是Django Rest框架。
我的模型
class Tutor(models.Model):
full_name = models.CharField(max_length=40)
email = models.EmailField()
notes = models.TextField()
def __str__(self):
return self.full_name
class Tutee(models.Model):
full_name = models.CharField(max_length=40)
email = models.EmailField()
tutor = models.ForeignKey(Tutor, on_delete=models.CASCADE, related_name="tutees")
subjects = models.CharField(max_length=13)
def __str__(self):
return self.full_name我的序列化程序
class TutorSerializer(serializers.ModelSerializer):
class Meta:
model = Tutor
fields = ['id', 'full_name', 'email', 'notes', 'tutees']
class TuteeSerializer(serializers.ModelSerializer):
class Meta:
model = Tutee
fields = ['id', 'full_name', 'email', "tutor", "subjects"]我的视图集
class TutorAPI(viewsets.ModelViewSet):
queryset = Tutor.objects.all()
serializer_class = TutorSerializer
permission_classes = [permissions.IsAuthenticated]
lookup_field = "full_name"
class TuteeAPI(viewsets.ModelViewSet):
queryset = Tutee.objects.all()
serializer_class = TuteeSerializer
permission_classes = [permissions.IsAuthenticated]
lookup_field = "full_name"如果你需要更多,请评论,我将编辑我的问题!即使您只是将其标记为重复,这也会很有帮助。
发布于 2021-01-22 00:58:02
如果您只想获得字符串表示,这可能会有所帮助
class TuteeSerializer(serializers.ModelSerializer):
tutor = serializers.StringRelatedField(many=True)
class Meta:
model = Tutee
fields = ['id', 'full_name', 'email', "tutor", "subjects"]发布于 2021-01-22 01:47:01
获取pk或名称对您可能没有意义。你应该同时获得两个甚至更多的字段。基于您的需求,Nest serializer可能是一个很好的解决方案。
你可能会看到类似这样的东西:
class TutorSerializer(serializers.ModelSerializer):
class Meta:
model = Tutor
fields = ['id', 'full_name', 'email',]
class TuteeSerializer(serializers.ModelSerializer):
tutor_info = TutorSerializer()
class Meta:
model = Tutee
fields = ['id', 'full_name', 'email', "tutor_info", "subjects"]https://stackoverflow.com/questions/65832034
复制相似问题