【发布时间】:2013-10-24 21:10:58
【问题描述】:
我正在使用 django-rest-framework 来构建后端。我的列表运行良好,但是(使用 django-rest-framework 管理屏幕)我无法仅使用外键对象的 Id 字段来创建对象。我希望我的配置不正确,但如果我必须写一些代码,我愿意:) 我正在从 .NET 和 Java 背景学习 django/python,并且可能已经被这个新堆栈宠坏了。
编辑:我试图不使用两个不同的模型类——我不应该这样做吗?
提前致谢。
来自 Chrome - 请求的关键位
Request URL:http://127.0.0.1:8000/rest/favorite_industries/
Request Method:POST
_content_type:application/json
_content:{
"user_id": 804 ,"industry_id": 20 }
回应
HTTP 400 BAD REQUEST
Vary: Accept
Content-Type: text/html; charset=utf-8
Allow: GET, POST, HEAD, OPTIONS
{
"user": [
"This field is required."
]
}
呃。以下是 django 的关键类:
class FavoriteIndustry(models.Model):
id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, related_name='favorite_industries')
industry = models.ForeignKey(Industry)
class Meta:
db_table = 'favorites_mas_industry'
class FavoriteIndustrySerializer(WithPkMixin, serializers.HyperlinkedModelSerializer):
class Meta:
model = myModels.FavoriteIndustry
fields = (
'id'
, 'user'
, 'industry'
)
编辑添加视图集:
class FavoriteIndustriesViewSet(viewsets.ModelViewSet):
#mixins.CreateModelMixin, viewsets.GenericViewSet):
paginate_by = 1
queryset = myModels\
.FavoriteIndustry\
.objects\
.select_related()
print 'SQL::FavoriteIndustriesViewSet: ' + str(queryset.query)
serializer_class = mySerializers.FavoriteIndustrySerializer
get/list 功能生成不错的 JSON:
{“计数”:2,“下一个”: "http://blah.com/rest/favorite_industries/?page=2&format=json", “上一个”:空,“结果”:[{“id”:1,“用户”: “http://blah.com/rest/users/804/”、“行业”:{“行业 ID”: 2、“industry_name”:“Consumer Discretionary”、“parent_industry_name”: "Consumer Discretionary", "category_name": "Industries"}}]}
【问题讨论】:
-
请分享您用于 API 的查看代码。
-
共享这就是我使用 django-rest-framework 的所有代码。等待有 viewSet 但我不明白它有多重要。基本上 url 被路由到 viewSet 并且 REST 很神奇:)
-
您是否尝试过传递
user而不是user_id?
标签: django django-rest-framework