我有一个模型:
from django.db import models
from django.contrib.auth.models import Group
class Question(models.Model):
text = models.TextField()
group = models.OneToOneField(Group)
当被问到有关问题的信息时,我只想退回text
零件。因为用户不需要看group
零件。但是,在保存模型时,我需要group
为用户填写零件。
这是序列化器:
class QuestionSerializer(ModelSerializer):
class Meta:
model = Question
fields = (text)
如果我像上面那样定义序列化器,那么在保存它时我不能做这样的事情:
def put(request, pk):
data = JSONParser().parse(request)
group = Group.objects.get(pk=pk)
qSerializer = QuestionSerializer(data=data, group=group) # the serializer does not know about group
那么在这种情况下我该怎么办?
更新:
@Anush向我指出了写入方向,解决方案是:
class QuestionSerializer(ModelSerializer):
class Meta:
model = Question
fields = ('text','group')
extra_kwargs = {'group': {'write_only': True}}
然后,在视图中:
def put(...):
data['group'] = group.pk
serializer = QuestionSerializer(data=data)
if serializer.is_valid():
serializer.save()
else:
raise serializers.ValidationError(serializer.errors)
您只能通过以下方式进行group
写入QuestionSerializer
:
class QuestionSerializer(ModelSerializer):
class Meta:
model = Question
fields = ('text','group')
extra_kwargs = {'group': {'write_only': True}}
在这里了解更多
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句