2016-09-06 72 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

相关问题