int()参数必须是字符串,类似字节的对象或数字,而不是“ Xray”

时间:2020-06-03 08:48:05

标签: django django-rest-framework postman

我正在尝试从两个嵌套的序列化程序创建一个数据库条目:

以下是序列化器:

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。

0 个答案:

没有答案