我有一個名為 EntrySerializer 的序列化程式,它應該回傳人員詳細資訊,但是如果我想創建一個新條目,它想要創建一個新的人員物件并引發錯誤。我的序列化程式是否有類似只讀欄位的內容?它應該創建一個新條目,但分配一個已經創建的人員物件。
class EntrySerializer(serializers.ModelSerializer):
staff = serializers.SerializerMethodField('get_staff')
def get_staff(self, obj):
return MyUserSerializer(obj.staff).data
class Meta:
model = Entry
depth = 1
fields = ('time_spend', 'staff',)
錯誤:
django.db.utils.IntegrityError: ERROR: NULL-value in Column ?staff_id? 關系 ?tagesbericht_tagesbericht_Entry? Not-Null-Constraint DETAIL: (54, 00:00:08.5, null, 61)。
郵政:
“tagesbericht_entry_set”:[{“staff”:2,“time_spend”:“00:12:08”}]
uj5u.com熱心網友回復:
我認為您需要添加staff_id用于寫作的欄位。
class EntrySerializer(serializers.ModelSerializer):
staff = MyUserSerializer(read_only = True)
staff_id = Serializers.IntegerField(write_only = True)
class Meta:
model = Entry
depth = 1
fields = ('time_spend', 'staff', 'staff_id')
并且 POST 有效載荷應該是
{
"staff_id": 2,
"time_spend": "00:12:08"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487022.html
標籤:django django-rest-framework
