2014-11-17 3 views
0

하나의 POST에서 객체와 그것의 many-to-many 관계를 만들려고하는데, 나는 계속 400을 얻고있다. 'attribute': 'This field is required,이 관계의 양쪽을 어떻게 만들 수 있는가? 하나의 게시물에?새로운 resouce와 그 관계를 장고 레스트 프레임 워크에서 하나 만들자.

은 내가 지금있는 것은 : 관련 이름을 가진

class Attribute(models.Model): 
    name = models.CharField(max_length=100) 


class Value(models.Model): 
    name = models.CharField(max_length=100) 
    attribute = models.ForiegnKey(Attribute, related_name="allowed_values") 

예쁜 표준 일대 다 관계. 내 시리얼 라이저는

class ValueSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Value 


class AttributeSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Attribute 

    allowed_values = ValueSerializer(many=True) 

내 데이터처럼 보이는 것은 :

{'name': 'new attribute', 
'allowed_values': [{'name': 'value1'}, {'name':'value2'}, {'name':'value3'}]} 

소스 코드를 읽는 동안, 그것은 속성이 저장 한 오브젝트 때까지 관련 값 필드를 나타해야처럼 보이는 무언가를보고 ,하지만 나는 이런 식으로 serializer를 호출 할 수없는 것 같습니다.

답변

0

필드 이름을 명시 적으로 정의하지 않았기 때문에 DRF는 기본적으로 attribute 필드 여야합니다.

는 다음과 같이, 모든 당신 필드를 정의 :

class ValueSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Value 
     fields = ('name',) 

class AttributeSerializer(serializers.ModelSerializer): 
    allowed_values = ValueSerializer(many=True) 

    class Meta: 
     model = Attribute 
     fields = ('name', 'allowed_values',) 

정의 필드 이름을 명시 적으로하는 것이 좋습니다. 나중에 다른 모델 필드가 추가 될 경우 잠재적 인 문제점을 방지합니다.

관련 문제