Korzystanie Django restDjango REST: Zagnieżdżone dodać obiekt na tworzenie (POST) nie tylko aktualizować (PUT)
Poniżej jest jak miałem serializer.py.
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type')
Type jest flatview
I potem zmienił go tak 'typem' został zagnieżdżone dla każdego profilu jak to ...
class TypeSerializer(serializers.ModelSerializer):
class Meta:
model = Type
fields = ('id', 'name', 'active')
class ProfileSerializer(serializers.ModelSerializer):
type = TypeSerializer()
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type'')
teraz działa idealnie, ale mogę teraz tylko aktualizuj "typ", gdy w szczegółach profilu jest on teraz tylko do odczytu.
Jak mogę dodać typ podczas tworzenia nowego profilu i nadal zachować ten zagnieżdżony widok?
Mam nadzieję, że wyjaśnia to wyraźnie.
UPDATE:
Ok, po prostu przeczytać:
Uwaga: Zagnieżdżone serializers nadają się tylko do tylko do odczytu przedstawień, jak istnieją przypadki, w których miałyby one niejednoznaczne lub nieoczywiste zachowanie, jeśli jest używane podczas aktualizowania instancji. Do odczytu reprezentacje zawsze należy użyć płaskiego reprezentację, korzystając jedną z podklasy RelatedField.
Więc to ma sens. Więc zmieniłem go ....
type = serializers.PrimaryKeyRelatedField()
To stawia go w post i pracy, ale to wstyd, nie mogę reprezentować „typ” z ID i nazwę, więc to sprawia, że więcej sensu do użytkownik końcowy?
stwierdziliśmy, że SlugRelatedField pozwalają mi teraz zmienić id do czegoś sensownego jak tytuł lub nazwę pola, ale to przy użyciu płaskiego pola nie zagnieżdżonego. Spróbuję ponownie z zagnieżdżeniem i zobaczę, czy operacja może zostać zastąpiona. – jason
Czy możesz wyjaśnić, w jaki sposób możemy sprawdzić tutaj inne pola? – CrazyGeek