我有一个我认为非常简单的序列化器设置,但当我尝试将数据PUT到我的API时,我收到以下错误:
ValueError:instance应该是一个queryset或其他可迭代的,其中many = True
这是观点:
class QuizAPI(generics.RetrieveUpdateDestroyAPIView):
model = Quiz
serializer_class = QuizSerializer
lookup_field = 'activity_id'
Run Code Online (Sandbox Code Playgroud)
和序列化器:
class MediaResourceSerializer(serializers.ModelSerializer):
owner = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
class Meta:
model = MediaResource
fields = ('owner', 'name', 'type', 'url')
class AnswerSerializer(serializers.ModelSerializer):
class Meta:
model = Answer
fields = ('text','is_correct','order')
class QuestionSerializer(serializers.ModelSerializer):
answers = AnswerSerializer(many=True, required=False)
resources = MediaResourceSerializer(many=True, required=False)
class Meta:
model = Question
fields = (
'question_id',
'type',
'order',
'question_text',
'explanation',
'resources',
'grading_weight',
'answers'
)
class QuizSerializer(serializers.ModelSerializer):
questions = QuestionSerializer(many=True, required=False)
created_by = serializers.PrimaryKeyRelatedField(many=False, …Run Code Online (Sandbox Code Playgroud) 出于某种原因,我的/ admin页面使我定义的模型不可编辑.这是在我部署的服务器上使用apache和postgres.我以超级用户身份登录,并显示如下链接:

如果我在连接到postgres的开发服务器中本地查看相同的代码,它看起来像这样:

知道是什么原因引起的吗?
**更新**
所以它并不总是被阻止.我今天登录了,我可以访问一些操作(我从我的数据库中清除了一些虚假的电子邮件请求)但是在删除了一些行之后它又回到了只读状态.
仍然不知道是什么导致了它.
home.models.py:
from django.db import models
from django import forms
from django.utils import timezone
class EmailRequest(models.Model):
email = models.EmailField()
created_date = models.DateTimeField(default=timezone.now())
class EmailRequestForm(forms.Form):
email = forms.EmailField()
Run Code Online (Sandbox Code Playgroud)
home.admin.py:
from django.contrib import admin
from home.models import EmailRequest
class EmailRequestAdmin(admin.ModelAdmin):
list_display = ('email', 'created_date')
admin.site.register(EmailRequest, EmailRequestAdmin)
Run Code Online (Sandbox Code Playgroud) 我觉得这个问题是如此基本,以至于没有任何教程或文档甚至不愿提及如何做到这一点.我熟悉其他平台上的Web服务,但我是WCF服务的新手.
我已经设置了像这样的wsHttpBinding(在web.config中):
<service behaviorConfiguration="IdentityServiceBehavior" name="Com.CompanyName.Service.IdentityService">
<endpoint address="/Identityservice" binding="wsHttpBinding"
bindingConfiguration="" contract="Com.CompanyName.Service.IIdentityService" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
bindingNamespace="" contract="IMetadataExchange" />
</service>
Run Code Online (Sandbox Code Playgroud)
我试图使用Fiddler或只是一个浏览器来点击URL,它只给我400结果.我已经尝试了一些不同的可能性,URL可能是什么,但没有骰子.我已尝试过此URL及其中的一些变体:http:// localhost:61987/IdentityService.svc/Identityservice
如果有人能指出我在这里缺少的基本信息的方向,我将非常感激.