我很难连接关于如何创建允许外键的视图和序列化程序的 django 和 django rest 框架上的所有文档。
编辑:我可能在这里有一个答案:http: //www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers
示例我有这些模型。
class SearchCity(models.Model):
city = models.CharField(max_length=200)
class SearchNeighborhood(models.Model):
city = models.ForeignKey(SearchCity, on_delete=models.CASCADE)
neighborhood = models.CharField(max_length=200)
我希望能够选择一个城市,然后查看该城市拥有的所有社区,并能够添加社区、编辑社区和删除社区。
所以也许是获取城市所有社区或为城市创建新社区的 url
url(r'^neighborhood/(?P<citypk>[0-9]+)$', SearchNeighborhoodListCreate.as_view()),
和一个编辑和删除邻域:
url(r'^neighborhood/(?P<citypk>[0-9]+)/(?P<neighborhoodpk>[0-9]+)$',SearchNeighborhoodDetail.as_view()),
我目前正在使用DRF Generics的ListCreateAPIView
和RetreiveUpdateDestoryAPIView
我知道我们有这样的选择query_setrelated
,可以让我们获得模型所具有的所有关系。
我知道我们可以x_set
选择。在我的例子中像这样使用。Searchcity.SearchNeighborhood_set.all()
我知道我们有相关的序列化程序
我创建它们的正确方法是这样的:
class CityNeighborhoodSerializer(serializers.ModelSerializer):
neighborhood = serializers.PrimaryKeyRelatedField(many=True, read_only=False)
class Meta:
model = SearchCity
fields = ('City', 'neighborhood')
但是在这个用例中我该如何使用它呢?
http://www.django-rest-framework.org/api-guide/relations/#serializer-relations
关于获取关系中的所有对象有一个很好的参考链接在这里 http://gregblogs.com/tlt-how-to-retrieve-the-fields-of-a-related-model-from-a-django-休息框架端点/
但这适用于编辑、删除相关对象吗?
最终我做了很多研究,但我正在寻求帮助以填补裂缝并真正理解这件事。这是一个常见的用例,我相信你们中的许多人以前都做过。
编辑:
看起来这个问题间接地回答了我的问题,但我仍然不确定。我将继续研究并测试它。看看我发现了什么。