[英]Posting foreign key IDs in Django Rest Framework
I'm working on a Django API using Django Rest Framework.我正在使用 Django Z55276C10D84E1DF7713B441E76E1 框架开发 Django API。 I have two related entities,
Event
and Venue
.我有两个相关的实体,
Event
和Venue
。 An Event takes place in a Venue.一个事件发生在一个场地。
By using nested serialization I'm able to return the following to my API users:通过使用嵌套序列化,我可以将以下内容返回给我的 API 用户:
{
"id": "1234",
"name": "My event",
"venue": {
"id": "5678",
"name": "My venue"
}
}
This is all as expected.这一切都在预料之中。 However, I'm now trying to POST an event and reference the venue as a parameter:
但是,我现在正在尝试发布事件并将场地作为参数引用:
POST /api/events/
{
"name": "My new event",
"venue_id": "5678"
}
But I'm struggling to make this work.但我正在努力完成这项工作。 I'm trying both
venue_id
and venue
as attribute names (I'd prefer _id
as it would be more correct, but it wouldn't be a big deal).我正在尝试将
venue_id
和venue
作为属性名称(我更喜欢_id
,因为它会更正确,但这没什么大不了的)。
I'm using the following serializers:我正在使用以下序列化程序:
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']
What would be the correct approach to achieve this?实现这一目标的正确方法是什么?
If you are using PrimaryKey(the venue_id) instead of the whole model object, you may use PrimaryKeyRelatedField instead of a nested serializer.如果您使用 PrimaryKey(thevenue_id) 而不是整个 model object,您可以使用PrimaryKeyRelatedField而不是嵌套的序列化程序。
In your example, it would look like:在您的示例中,它看起来像:
class EventCreateSerializer(serializers.ModelSerializer):
venue = PrimaryKeyRelatedField(queryset=Venue.objects.all())
class Meta:
model = Event
fields = ['id', 'name', 'venue', 'created_at', 'updated_at']
And you shall use the request:你应该使用请求:
{
"name": "My new event",
"venue": "5678"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.