1
我有一個ModelSerializer
,它有一個ForeignKey
字段。這是模型的代碼:不會調用外鍵字段上的Django Rest Framework自定義驗證功能
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_employee
不叫和序列化程序返回驗證錯誤說:
pk「1321」無效 - 對象不存在。
這是怎麼發生的?難道我做錯了什麼?是否有另一個驗證程序在我的驗證程序之前被調用?
有沒有辦法來重寫驗證?我想創建一個新的對象,如果它不存在@linovia – Navid777
有你自己的領域和重寫https://github.com/encode/django-rest-framework/blob/master/rest_framework/relations.py#L251 – Linovia