2016-09-28 12 views
0

私は外部キーを含むモデルを持っていますので、私は私の更新機能を作成しますが、私のモデルを更新したいときにはすべてのフィールドは外部キーを除いて更新されます。 .Iは、私は答えにupdate()を無効にするDjango rest framework

私のモデルを得ることを願っています:

class Produit (models.Model): 
    titre=models.CharField(max_length=100) 
    description=models.TextField() 
    photo_principal=models.ImageField(upload_to='produits/',default='image.jpg') 
    photo_1 = models.ImageField(upload_to='produits/', default='image.jpg') 
    photo_2 = models.ImageField(upload_to='produits/', default='image.jpg') 
    photo_3 = models.ImageField(upload_to='produits/', default='image.jpg') 
    prix=models.FloatField() 
    new_prix=models.FloatField() 
    categorie=models.ForeignKey(Categorie,related_name= 'produit', on_delete=models.CASCADE) 

serializers.py

class ProduitUpdateSerializer(serializers.ModelSerializer): 
categorie_id = serializers.PrimaryKeyRelatedField(queryset=Categorie.objects.all(),source='categorie.id') 

class Meta: 
    model = Produit 
    fields = ['titre', 'description', 'photo_principal', 'photo_1', 'photo_2', 'photo_3', 'prix', 'new_prix', 
       'categorie_id', ] 

def update(self, instance, validated_data): 
    print(validated_data) 
    instance.categorie_id = validated_data.get('categorie_id',instance.categorie_id) 
    instance.titre = validated_data.get('titre', instance.titre) 
    instance.description = validated_data.get('description', instance.description) 
    instance.photo_principal = validated_data.get('photo_principal', instance.photo_principal) 
    instance.photo_1 = validated_data.get('photo_1', instance.photo_1) 
    instance.photo_2 = validated_data.get('photo_2', instance.photo_2) 
    instance.photo_3 = validated_data.get('photo_3', instance.photo_3) 
    instance.prix = validated_data.get('prix', instance.prix) 
    instance.new_prix = validated_data.get('new_prix', instance.new_prix) 
    instance.save() 

    return instance 
+0

あなたはあなたのプリント結果を投稿できますか? – pleasedontbelong

答えて

1

シリアライザが再いますので、その場合には、直接IDと遊ぶべきではありませんオブジェクトを回す:

class ProduitUpdateSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Produit 
     fields = ['titre', 'description', 'photo_principal', 'photo_1', 'photo_2', 'photo_3', 'prix', 'new_prix', 
        'categorie', ] 

    def update(self, instance, validated_data): 
     print(validated_data) 
     instance.categorie = validated_data.get('categorie', instance.categorie) 
     instance.titre = validated_data.get('titre', instance.titre) 
     instance.description = validated_data.get('description', instance.description) 
     instance.photo_principal = validated_data.get('photo_principal', instance.photo_principal) 
     instance.photo_1 = validated_data.get('photo_1', instance.photo_1) 
     instance.photo_2 = validated_data.get('photo_2', instance.photo_2) 
     instance.photo_3 = validated_data.get('photo_3', instance.photo_3) 
     instance.prix = validated_data.get('prix', instance.prix) 
     instance.new_prix = validated_data.get('new_prix', instance.new_prix) 
     instance.save() 

     return instance 
関連する問題