我正在使用Django和restdjangoframework
的项目我在我的Serializer.py中编写了所有序列化类,我编写了一个foreignKey和OnetoOnefield的序列化,但我还不了解如何对ManytoMany关系进行序列化
这是我的代码的例子:
class CV(models.Model):
numtel = models.IntegerField(blank=False,null=False)
datecv= models.DateTimeField(auto_now = True,blank=False,null=False)
pathcv = models.TextField(blank=False,null=False)
compteCand = models.OneToOneField('CompteCandidat',related_name="infocand")
diplome = models.ManyToManyField('Diplome', related_name="infoDiplome", blank=True)
#######################################################
def __str__(self):
return self.numtel
def __CVs__(self):
return self.compteCand.all()
class Diplome(Competence):
type=models.TextField(blank=False,null=False)
domaine=models.TextField(blank=False,null=False)
specialite=models.TextField(blank=False,null=False)
annee=models.DateTimeField(auto_now = False,blank=False,null=False)
#######################################################
def __str__(self):
return self.type
return self.domaine
return self.specialite
return self.annee
我还需要知道我是否必须在Diplome中加入ManytoMany与CV的关系
我是否编写了这样的序列化类:
class CVSerializer(serializers.ModelSerializer):
infocand= CompteCandidatSerializer(many=False,read_only=True)
infoDiplomee=CompetenceSerializer(many=True,read_only=True)
class Meta:
model =CV
fields=('first_name','last_name','email','numtel','infocand','infoDiplome')
class DiplomeSerializer(serializers.ModelSerializer):
class Meta:
model =Diplome
fields=
(....??)
答案 0 :(得分:1)
如果要序列化ManyToMany字段,只需像编写OneToOne一样编写序列化程序,但添加many=True
kwarg。
如果你想以一种特殊的方式对它们进行序列化,例如在这里,字段'diplome'被序列化为所有diplomes的计数,你可以使用SerializerMethodField
。
哦,你的CVSerializer中的infoDiplomee
!= infoDiplome
字段。