2016-09-06 4 views
0

ManyToMany 관계가있는 모델이 있습니다.장고 Rest 프레임 워크에서 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 끝점을 만들? 이걸 어디에 넣어야할지 모르겠다. 그것은 serializer 또는 viewsets에 있습니까? 당신은 예제를 줄 수 – StarLord

+0

당신이 당신의 views.py에 넣고 그보기로 귀하의 API URL을 가리킬 수 있습니다. – Kishan

관련 문제