我一直在寻找并跟踪Django Rest的官方文档here,并试图以此为基础建立我的方法,但我使用的是一对一的关系。在
但是,当我在browsable接口中添加时,它不会在嵌套的文本字段中获取值,并告诉我它不能为null。我试着在这里搜索,但是找不到任何能让一段感情像我想要的那样工作的东西。我是REST框架的新手,我真的很困惑。谢谢!在
基本上,每个动词都需要有一个过去时宾语,它有这三个字段(为了测试,更多,甚至是另一层嵌套,稍后会添加)。我只是不能让他们用可浏览的API添加。在
在模型.py公司名称:
from django.db import models
class Verb(models.Model):
verb = models.TextField()
verbal_noun = models.TextField()
verbal_adjective = models.TextField()
present = models.TextField()
future = models.TextField()
habitual_present = models.TextField()
conditional = models.TextField()
past_habitual = models.TextField()
past_subjunctive = models.TextField()
present_subjunctive = models.TextField()
imperative = models.TextField()
class Past(models.Model):
verb = models.OneToOneField(Verb)
first_singular = models.TextField()
second_singular = models.TextField()
third_singular = models.TextField()
在序列化程序.py公司名称:
^{pr2}$原始数据输入:
{
"verb": "test",
"verbal_noun": "test",
"verbal_adjective": "test",
"past": {
"first_singular": "test1",
"second_singular": "test2",
"third_singular": "test3"
},
"present": "test",
"future": "test",
"habitual_present": "test",
"conditional": "test",
"past_habitual": "test",
"past_subjunctive": "test",
"present_subjunctive": "test",
"imperative": "test"
}
在视图.py在
from conjugations.models import Verb
from conjugations.serializers import VerbSerializer
from rest_framework import generics, permissions
class VerbList(generics.ListCreateAPIView):
queryset = Verb.objects.all()
serializer_class = VerbSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class VerbDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Verb.objects.all()
serializer_class = VerbSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
在网址.py在
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from conjugations import views
urlpatterns = [
url(r'^verbs/$', views.VerbList.as_view()),
url(r'^verbs/(?P<pk>[0-9]+)/$', views.VerbDetail.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)
错误:
File "/home/Projects/Python/virtualenvs/remnigh/lib/python3.5/site-packages/rest_framework/mixins.py", line 26, in perform_create
serializer.save()
File "/home/Projects/Python/virtualenvs/remnigh/lib/python3.5/site-packages/rest_framework/serializers.py", line 191, in save
self.instance = self.create(validated_data)
File "/home/Projects/Python/reimnigh-test/reimnigh/conjugations/serializers.py", line 19, in create
past_data = validated_data.pop('past')
KeyError: 'past'
尝试将
VerbSerializer
中的past
字段改为:如果过去的动词关系是一个外键,则可以使用这种语法-我不能确定它是否适用,但DRF文档指出,要嵌套反向关系,必须指定相关名称,如上所述或在模型定义中指定。在
如果这不起作用,你能公布准确的错误/回溯吗?在
请确保您的请求以json内容类型执行。HTML表单不支持嵌套序列化程序。在
我的py序列化程序有点乱。我需要删除
past_data
的for
循环,因为它是一对一的,只需直接映射。更正以下文件:它也有助于确保您的迁移也是最新的。这可能和这有点关系。在
相关问题 更多 >
编程相关推荐