我在django项目中有两个模型。再见,还有广告游戏。模型广告游戏与再见django管理面板。我可以建立适当的对象广告模型。但当我尝试在序列化程序中生成时,错误是:IntegrityError
FOREIGN KEY constraint failed
在模型.py公司名称:
^{pr2}$在序列化程序.py在
class AdInfoSerializer(serializers.ModelSerializer):
"""ad information serialization"""
phonenumber = serializers.IntegerField()
class Meta:ad_info=adgame,
model = AdIfo
fields = "__all__"
class AdGameSerilizer(serializers.ModelSerializer):
''' Ad model serialization '''
ad_info = AdInfoSerializer(required=True)
console = serializers.ChoiceField(choices=AdGame.CONSOLE_GAME)
game_region = serializers.ChoiceField(choices=AdGame.GAME_REGION)
owner = serializers.PrimaryKeyRelatedField(read_only=True,
default=serializers.CurrentUserDefault())
image = serializers.ImageField()
class Meta:
model = AdGame
fields = [
'ad_info',
'title',
'game',
'console',
'game_region',
'image',
'owner',
'description',
'publish_date',
]
def create(self, validated_data):
info_data = validated_data.pop('ad_info')
adgame = AdGame.objects.create(**validated_data)
AdIfo.objects.create(ad_info=adgame, **info_data)
adgame.save()
return adgame
def update(self, instance, validated_data):
info_data = validated_data.pop('ad_info')
instance.ad_info.address = info_data.get('address',
instance.ad_info.address)
instance.ad_info.price = info_data.get('price',
instance.ad_info.price)
instance.ad_info.phonenumber = info_data.get('phonenumber',
inad_info=adgame,stance.ad_info.phonenumber)ad_info=adgame,
instance.ad_info.ad_status = info_data.get('ad_status',
instance.ad_info.ad_status)
instance.title = validated_data.get('title', instance.title)
instance.image = validated_data.get('image', instance.image)
instance.console = validated_data.get('console',
instance.console)
instance.game = validated_data.getad_info=adgame,('game', instance.game)
instance.game_region = validated_data.get('game_region',
instance.game_region)
instance.description = validated_data.get('description',
instance.description)
instance.owner = validated_data.get('owner', instance.owner)
info = instance.ad_info
instance.save()ad_info=adgame,
info.save()
return instance
我知道我的问题是在django rest框架中必须处理create()
。必须先创建adinfo模型,然后创建AdGame。我试图将AdGame的adinfo id作为kwargs传递给AdGame,但我的知识还不够。我意识到adinfo没有将AdIfo的id从AdInfoSerializer传递到AdGameSerializer。但是为了测试,我为AdInfoSerializer创建了一个视图,一切正常,id字段将包含在我的结果中。在
目前没有回答
相关问题 更多 >
编程相关推荐