연락처 정보가있는 양식을 제공하는 각도 앱과 연락처 번호 목록이 있습니다. 각 연락처는 N 개의 숫자를 가질 수 있으며 그 숫자 각각에는 유형 (셀, 집, 직장 ...)이 있습니다. 아래의 코드는 json을 각도 애플리케이션으로 보내며 새로운 숫자를 추가하는 등의 방법으로 처리 할 수 있습니다. numbers ..... 그러나 DRF가 json을 똑같은 포맷으로 되 돌리면 그것을 역 직렬화 할 수 없습니다. 그것은이 오류 오프가 발생합니다 : 완전히 유효Django Rest Framework 시리얼 라이저 양방향성을 만드는 방법
AttributeError: 'Contact' object has no attribute 'numbers'
을하지만, 시리얼 라이저는 필드가 나는 연락처를 저장 한 후 내가 저장할 수 있도록 그 가치에 걸 수 있어야한다.
나는 업데이트 방법이 같은 완전히 날조 뭔가를 할 경우 : 그 오류를 제거 할 수
self.object = self.get_object_or_none()
self.object.numbers = []
하지만, 그것은 오류 이런 종류의 오프 던졌습니다 :
{'numbers': [
{u'non_field_errors': [u'Cannot create a new item, only existing items may be updated.']},
{u'non_field_errors': [u'Cannot create a new item, only existing items may be updated.']},
{u'non_field_errors': [u'Cannot create a new item, only existing items may be updated.']}
]}
처음 두를 전화 번호는 새로운 것이 아니며 ID 필드가 있고 db에서 왔고 세 번째 것은 새 것입니다. 추가하려고합니다.
다음은 코드입니다. 확실히 이것은 일을하는 기괴한 방법이 아닙니다. Django Rest Framework는 무엇을 사용해야합니까? 나는 이런 일을하는 문서화 된 방법 인 것 같은 쇼 스토퍼에 계속 뛰어 왔지만 그때 그들은 눈부시게 날려 버린다.
class PhoneTypeSerializer(serializers.ModelSerializer):
class Meta:
model = PhoneType
class ContactPhoneSerializer(serializers.ModelSerializer):
number_type = PhoneTypeSerializer(source='number_type')
class Meta:
model = ContactPhone
depth = 1
exclude = ('owner',)
class ContactSerializer(serializers.ModelSerializer):
numbers = ContactPhoneSerializer(source='number_set', many=True, required=False)
class Meta:
model = Contact
어떻게 데이터를 비 직렬화하여 저장할 수 있습니까?
게시 된 데이터로 요청 예를 보여줄 수 있습니까? – mariodev