0
我有問題使用django-rest-framework ModelViewset create(self, request)
方法從請求中獲取對象數據。DRF:TypeError:<Model:Model對象>不是JSON可序列化
這是我model.py
class Heat(models.Model):
# Relationship Fields
animal = models.ForeignKey(
Animal, related_name='heats',
on_delete=models.CASCADE
)
# Fields
performer = models.CharField(max_length=25)
is_bred = models.BooleanField(default=False)
note = models.TextField(max_length=250, blank=True, null=True)
這是我serializers.py
class HeatSerializer(serializers.ModelSerializer):
class Meta:
model = Heat
fields = [
'id',
'animal',
'performer',
'is_bred',
'note',
]
這裏是我們可以找到自己ModelViewset錯誤:
class HeatViewSet(viewsets.ModelViewSet):
queryset = Heat.objects.all()
serializer_class = HeatSerializer
@transaction.atomic
def create(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
print serializer.validated_data['animal']
如果你看看在這行代碼:
// this purpose is to print the actual value of an animal object
// but it gave me the TypeError: <Animal: Animal object> is not JSON serializable.
print serializer.validated_data['animal']
如果我們有這樣一個能正常工作,因爲這只是一個正常的字段一樣真正到了其他領域,除了這是一個關係場的動物:
print serializer.validated_data['performer']
現在,當我做到這一點,對象被直接保存到數據庫中。
serializer.save()
不過在Django會提示我的SAME類型的錯誤!
當刪除整個create(self, request)
該方法流程運行良好沒有錯誤,但我想在create(self, request)
!執行許多查詢!這不會做得對,請幫助!
你需要寫一個串行的'Animal'類,並把它添加到''HeatSerializer。 –
我在'HeatSerializer'中做了'animal = AnimalSerializer'仍然不能工作 –
就像那樣? 'animal = AnimalSerializer(source ='animal_set',many = True,read_only = True)' –