2016-09-06 4 views
0

ManyToMany関係のモデルがあります。Django Rest FrameworkでManyToMany関係からオブジェクトを削除する方法

class File(models.Model): 
    name = models.CharField(max_length=64) 

    def __str__(self): 
     return self.name 


class Folder(models.Model): 
    name = models.CharField(max_length=64) 
    files = models.ManyToManyField(File, related_name='folders', default=None) 

    def __str__(self): 
     return self.name 

シリアライザ:

class FileSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = models.File 
     fields = '__all__' 


class FolderSerializer(serializers.ModelSerializer): 
    files = FileSerializer(many=True, read_only=True) 
    file = serializers.PrimaryKeyRelatedField(queryset=models.File.objects.all(), 
              write_only=True, label='File Name') 

    class Meta: 
     model = models.Folder 
     fields = ('id', 'name', 'files', 'file') 

私はフォルダにファイルオブジェクトを追加することができています。私はあまりにもフォルダの名前を更新することができます。しかし、どのようにフォルダからファイルオブジェクトを削除するのですか?

答えて

1

あなたはファイルからアクセスしている場合は

ファイル= File.objects.get(クエリ)次に

あなたは

file.folders.remove(folder_object)を行うことができます

編集: アプリのURLのファイル:

urls.py:

from django.conf.urls import include, url 
from .views import folder 
urlpatterns = [ 
    url(r'remove-folder/', folder, name='remove_folder'), 
] 

あなたのアプリのviews.py:

def folder(request): 
    file = File.objects.get(query) 
    file.folders.remove(folder_object) 
    # return appropriate data 
+0

これを行うためにAPIエンドポイントを作成する方法?私はこれをどこに置くべきかわからないのですか?それはシリアライザやビューセットでですか?あなたは例を挙げることができます – StarLord

+0

これをあなたのviews.pyに入れて、あなたのapi URLをそのビューに向けることができます。 – Kishan

関連する問題