这是模型
foreach (var object in Objects)
{
try{
// check conditions
// perform conversions on the data and assign to domain object.property
//....
//db.object.Add(object);
//db.savechanges();
}catch{
//update log if the try fails
}
}
这是序列化程序
class Event(models.Model):
calendar = models.ForeignKey(Calendar)
title = models.CharField()
class Calendar(models.Model):
title = models.CharField()
然后我尝试在json下面发布以在日历class EventSerializer(models.Model):
calendarId = serializers.CharField(source='calendar.id')
class Meta:
model = Event
fields = ('id', 'title', 'calendarId')
class CalendarSerializer(models.Model):
class Meta:
model = Calendar
fields = ('id', 'title')
3b60a22c-d46e-46ca-b978-ec81a8b47fcb
失败并出现以下错误
ValueError:无法指定“{u'id”: u'3b60a22c-d46e-46ca-b978-ec81a8b47fcb'}“:”Event.calendar“必须 是一个“日历”实例。
如何解决此问题?
答案 0 :(得分:0)
我假设你已经创建了类EventSerializer(serializers.ModelSerializer) - (但我的问题是你编写了EventSerializer(models.Model))。
无论如何,你应该发布你的数据:
{
title:"abc",
calendar:"3b60a22c-d46e-46ca-b978-ec81a8b47fcb"
}
如果不起作用,则应使用日历对象填充日历字段
def create(self, request, format=None):
calendarId = request.data.get("calendarId", None)
calendar = Calendar.objects.get(id=calendarId)
request.data["calendar"] = calendar
...
..
.