我正在尝试从两个嵌套的序列化程序创建一个数据库条目:
以下是序列化器:
class BboxSerializer(serializers.ModelSerializer):
xray = serializers.IntegerField(required=False)
class Meta:
model = Bbox
fields = ('id', 'xmin', 'ymin', 'xmax', 'ymax', 'xray')
class XrayBboxSerializer(serializers.ModelSerializer):
bboxes = BboxSerializer(many=True)
class Meta:
model = Xray
fields = ('id', 'bboxes', 'picture', 'pic_name')
def create(self, validated_data):
bboxes = validated_data.pop('bboxes')
xray = Xray.objects.create(**validated_data)
for bbox in bboxes:
Bbox.objects.create( xray=xray)
return xray
以下是模型:
class Xray(models.Model):
picture = models.ImageField(upload_to='xray', blank=True)
pic_name = models.CharField(max_length=50, unique=True)
expert_check = models.BooleanField(default=0)
def __str__(self):
return self.pic_name
class Bbox(models.Model):
xray = models.ForeignKey(Xray, related_name = "bboxes", on_delete=models.CASCADE)
xmin = models.FloatField(default=0)
ymin = models.FloatField(default=0)
xmax = models.FloatField(default=100)
ymax = models.FloatField(default=100)
def __str__(self):
return self.xray.pic_name
现在当我作为请求发送此json
{
"bboxes": [{"xmin": "20.0",
"ymin": "0.0",
"xmax": "100.0",
"ymax": "100.0"}],
"pic_name": "zsaxerrr",
"expert_check": 0
}
我收到此错误:
int() argument must be a string, a bytes-like object or a number, not 'Xray'
由于某些原因,创建了我的Xray obj,但没有创建Bbox obj。