2016-09-06 96 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)

編輯: 您的應用程序網址文件:

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

相關問題