我正在使用django-rest-framework 3.3.1,我正在努力在同一个POST中反序列化新记录和相关记录。
我的模特看起来像这样:
class Employee(models.Model):
name = models.CharField(max_length=128)
locn = models.CharField(max_length=128)
class Degree(models.Model):
employee = models.ForeignKey(Employee, related_name='degrees')
type = models.CharField(max_length=128)
date = models.DateField()
我有一个简单的序列化程序:
class DegreeSerializer(serializers.ModelSerializer):
class Meta:
model = Degree
fields = ('id', 'employee', 'type', 'date',)
和一个简单的员工序列化程序:
class EmployeeSerializer(serializers.ModelSerializer):
degrees = DegreeSerializer(many=True)
class Meta:
model = Employee
fields = ('id', 'name', 'locn', 'degrees',)
我希望用户能够在同一个UI对话框中添加新员工及其学位(而不是先添加员工,然后再向现有员工添加学位)。我试图将新员工和新学位置于同一个POST中失败,DRF告诉我学位项目需要员工。是否可以在DRF本地执行此操作?
一个相关的问题是,当用户使用修改过的Degree项目在Employee上发出PUT时,如何确保这些度数项目实际上替换了DB中的所有现有项目?
感谢。