我想使用其余框架为我的 django 模型创建样板表单。
文档显示它使用 APIView:http://www.django-rest-framework.org/topics/html-and-forms/#rendering-forms http://www.django-rest-framework.org/topics/html-and-forms/#rendering-forms.
但我想使用 ModelViewSet 以避免定义自定义操作方法。
这可能吗?你能分享一个例子吗?
这是我尝试过的。我的型号:
class Person(AbstractUser):
pass
我的序列化器:
class PersonSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Person
fields = ('first_name', 'last_name', 'email', 'groups')
My view:
class PersonViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows persons to be viewed or edited.
"""
queryset = Person.objects.all().order_by('-date_joined')
serializer_class = PersonSerializer
renderer_classes = [TemplateHTMLRenderer]
template_name = 'common/rest_create.html'
这是我的网址:
url(r'person_create_api/$', PersonViewSet.as_view({'get': 'create'}), name='person-create-api'),
我得到的错误是:
IntegrityError at /school/person_create_api/
duplicate key value violates unique constraint "school_person_username_key"
DETAIL: Key (username)=() already exists.
当我添加username
字段到序列化器字段,我得到:
HTTP/1.0 400 Bad Request
Date: Tue, 20 Sep 2016 17:00:22 GMT
Server: WSGIServer/0.2 CPython/3.5.1+
X-Frame-Options: SAMEORIGIN
Vary: Cookie
Allow: GET, HEAD, OPTIONS
Content-Type: text/html; charset=utf-8
我正在使用 django 1.9 和最新的 DRF 3.4.6。