[英]Posting foreign key IDs in Django Rest Framework
我正在使用 Django Z55276C10D84E1DF7713B441E76E1 框架開發 Django API。 我有兩個相關的實體, Event
和Venue
。 一個事件發生在一個場地。
通過使用嵌套序列化,我可以將以下內容返回給我的 API 用戶:
{
"id": "1234",
"name": "My event",
"venue": {
"id": "5678",
"name": "My venue"
}
}
這一切都在預料之中。 但是,我現在正在嘗試發布事件並將場地作為參數引用:
POST /api/events/
{
"name": "My new event",
"venue_id": "5678"
}
但我正在努力完成這項工作。 我正在嘗試將venue_id
和venue
作為屬性名稱(我更喜歡_id
,因為它會更正確,但這沒什么大不了的)。
我正在使用以下序列化程序:
class VenueSerializer(serializers.ModelSerializer):
class Meta:
model = Venue
fields = ['id', 'name', 'created_at', 'updated_at']
class EventSerializer(serializers.ModelSerializer):
venue = VenueSerializer()
class Meta:
model = Event
fields = ['id', 'name', 'venue', 'created_at', 'updated_at']
實現這一目標的正確方法是什么?
如果您使用 PrimaryKey(thevenue_id) 而不是整個 model object,您可以使用PrimaryKeyRelatedField而不是嵌套的序列化程序。
在您的示例中,它看起來像:
class EventCreateSerializer(serializers.ModelSerializer):
venue = PrimaryKeyRelatedField(queryset=Venue.objects.all())
class Meta:
model = Event
fields = ['id', 'name', 'venue', 'created_at', 'updated_at']
你應該使用請求:
{
"name": "My new event",
"venue": "5678"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.