未调用ForeignKey字段上的Django Rest Framework自定义验证函数
我有一个未调用ForeignKey字段上的Django Rest Framework自定义验证函数,django,validation,django-rest-framework,Django,Validation,Django Rest Framework,我有一个ModelSerializer,它有一个ForeignKey字段。这是模型的代码: class Attendance(models.Model): employee = models.ForeignKey(Employee, related_name='attendance_times') datetime = models.DateTimeField() 这是序列化程序: class AttendanceSerializer(serializers.ModelSeri
ModelSerializer
,它有一个ForeignKey
字段。这是模型的代码:
class Attendance(models.Model):
employee = models.ForeignKey(Employee, related_name='attendance_times')
datetime = models.DateTimeField()
这是序列化程序:
class AttendanceSerializer(serializers.ModelSerializer):
def validate_employee(self, value):
try:
Employee.objects.get(pk=value)
except Employee.DoesNotExist:
Employee.objects.create(pk=value)
return value
class Meta:
model = Attendance
fields = ('employee', 'datetime')
问题是,当我发送post请求以创建新对象时,没有调用函数validate\u employee
,序列化程序返回一个验证错误,说明:
无效的pk“1321”-对象不存在
为什么会这样?我做错什么了吗?是否在我的验证器之前调用了另一个验证器?在调用
验证之前会发生一些事情
特别是,字段本身将执行初始验证检查,并将传入数据转换为Python对象。使用PrimaryKeyRelatedField
它将检查关联的模型并返回实例。是否有方法覆盖该验证?我想创建一个新对象,如果它不存在@linoviaHave your-your-your-field并重写