在Django REST框架中,是否有一種使用可空的ForeignKeys和序列化器的簡單方法?我一直遇到問題(主要是在我的測試中),我將序列化一個具有可空的外鍵的模型,將數據發回DRF,並收到錯誤'錯誤的類型。預計pk值,收到str。'如何在DRF中使用Foreign來使ForeignKey不錯?
實施例:
class Book(models.Model):
publisher = models.ForeignKey(Publisher, null=True, blank=True)
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
class BookViewSet(viewsets.ViewSet):
model = Book
serializer_class = BookSerializer
和通常執行與網址,路線,和所有。
然後,在外殼:
>>> from django.test.client import Client
>>> client = Client()
>>> book = Book()
>>> serializer = BookSerializer(book)
>>> response = client.post('/books/', serializer.data)
>>> response.data
{'publisher': ['Incorrect type. Expected pk value, received str.']}
看起來這應該工作,因爲被張貼的數據直接從DRF的串行來了。有人遇到過這種情況麼?這裏有什麼最佳實踐?
如果你有需要=假定義的串行現場明確發生什麼呢? –
明確地定義字段與required = False不會改變任何東西 – dustinfarris