Django models DRF-int()参数必须是字符串、类似字节的对象或数字,而不是';延迟属性';
我有两个Json数据,我创建了单独的端点,用于将下面的Json数据保存到数据库中,我共享了相关的模型和序列化程序,我能够完美地保存数据,没有任何问题,请向下滚动查看问题详细信息 相册json:Django models DRF-int()参数必须是字符串、类似字节的对象或数字,而不是';延迟属性';,django-models,django-rest-framework,django-views,Django Models,Django Rest Framework,Django Views,我有两个Json数据,我创建了单独的端点,用于将下面的Json数据保存到数据库中,我共享了相关的模型和序列化程序,我能够完美地保存数据,没有任何问题,请向下滚动查看问题详细信息 相册json: { "id": "dsadad-dsds-gfgf", "title": "Album name", "description": "Albumdescription&
{
"id": "dsadad-dsds-gfgf",
"title": "Album name",
"description": "Albumdescription",
"url": "https://example.com/albums/dsadad-dsds-gfgf"
}
相册型号:
class Albums(models.Model):
id = models.CharField(max_length=100,primary_key=True)
title = models.CharField(max_length=20)
url = models.CharField(max_length=100)
相册序列化程序:
class AlbumsSerializer(serializers.HyperlinkedModelSerializer):
tracks= serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='people-detail'
)
url = serializers.CharField()
class Meta:
model = models.Albums
fields = ('id', 'title','tracks','url')
我有第二个json数据,如下所示,它需要通过标识下面json中的albums属性与上面保存的模型数据之间的关系保存在数据库中,因此下面是代码
{
"id": "dsdsd-fdfd0-jkjh",
"name": "erika",
"albums": [
"https://example.com/albums/dsadad-dsds-gfgf"
],
"url": "https://example.com/track/dsdsd-fdfd0-jkjh"
}
型号:
class Tracks(models.Model):
id = models.CharField(max_length=100,primary_key=True)
name = models.CharField(max_length=20)
albums= models.ForeignKey(Albums,related_name='tracks',on_delete=models.CASCADE)
序列化程序:
class TrackSerializer(serializers.ModelSerializer):
albums= serializers.ListField()
class Meta:
model = models.Tracks
fields = ('id', 'name','albums')
def create(self, validated_data):
print(validated_data)
albums_data = validated_data.pop('albums')
for album_url in albums_data:
movie = models.Albums.objects.get(url=album_url)
models.Tracks.objects.create(albums=movie, **validated_data)
return models.Tracks
视图只是每个序列化程序的modelviewset
我得到了错误,也请告知,当URL出现在json数据中以识别父关系和子关系时,该方法是否有任何错误,在Create方法中检测到错误,这是正确的方法吗
TypeError:int()参数必须是字符串、类似字节的对象或
编号,而不是“延迟属性”
你能分享这个异常的全部回溯吗?这一行是错误的
返回模型。人
。您需要返回创建的实例,而不是模型类。我不确定您在哪里使用此序列化程序,但由于您正在创建多个人员对象,因此可以返回最后一个实例。另外,最好将单个模型类导入到您的命名空间中,而不是整个模型
文件。谢谢你们两位响应我的查询,我正在viewset中使用serializer,我已经获取了people对象的最后一个实例,问题已经解决。谢谢,问题解决了