2013-03-18 3 views
0

django-rest-framework을 사용하면 관련 필드에서 내용을 검색 할 수 있습니다. 예를 들어, 그 안에 모든 프로젝트가 들어있는 장르 목록을 만들고 싶습니다. 이것은 내가 무엇을 가지고 있지만 오류가 점점 계속 :장고 레스트 프레임 워크 관련 필드 검색

'Genre' object has no attribute 'project_set'

models.py를

class Genre(models.Model): 
    name = models.CharField(max_length=100, db_index=True) 

class Project(models.Model): 
    title = models.CharField(max_length=100, unique=True) 
    genres = models.ManyToManyField(Genre, related_name='genres') 

serializers.py

class GenreSerializer(serializers.ModelSerializer):  
    project_set = serializers.ManyRelatedField() 

    class Meta: 
     model = Genre 
     fields = ('name', 'project_set') 

답변

3

당신이 Project에 사용중인 관련 이름 클래스 이름이 잘못되었습니다. 관련 이름은 주어진 장르 인스턴스와 관련된 일련의 프로젝트에 액세스하는 방법입니다. 따라서 related_name='projects'과 같은 것을 사용해야합니다. (잘못 했으니까요.)

그런 다음 serializer 클래스가 사용중인 관련 이름과 일치하는지 확인하십시오. 따라서 두 곳에서 project_setprojects이되어야합니다.

(또는 당신은 완전히 related_name='genres'을 제거 할 수 있고 당신이 'project_set' 될 것입니다 기본 related_name으로, 기대했던대로 모든 것이 작동합니다.)

관련 문제