我有一个模特:
class XCall(models.Model): created_on = models.DateTimeField(auto_now_add=True) send_on = models.DateTimeField(default=datetime.now) recipient = models.ForeignKey(User) text = models.CharField(max_length=4096) backup_calls = models.IntegerField(blank=True, null=True)
并为该模型的序列化器:
class CallSerializer(serializers.HyperlinkedModelSerializer): url = serializers.HyperlinkedIdentityField( view_name='call-detail', ) # some validation and custom field definitions ... class Meta: model = XCall fields = ('url', 'id', 'text', 'recipient', 'send_on', 'backup_calls', 'status') lookup_field= 'pk'
这是列表视图:
class CallList(generics.ListCreateAPIView): serializer_class = CallSerializer permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrSuperuser,) def pre_save(self, obj): auth_user = self.request.user obj.auth_user = auth_user def get_queryset(self): """ This view should return a list of all the calls for the currently authenticated user. """ auth = self.request.user if isinstance(auth, AnonymousUser): return [] elif auth.is_superuser: return XCall.objects.all() else: return XCall.objects.filter(auth_user=auth)
在可CallList
浏览的API中,我在底部的POST表单中看到以下内容:
我的问题是:为什么没有设置默认值send_on
,有一个用于backup_calls
?我假设表单将遵循XCall
模型规范并datetime.now()
用于默认前者,并backup_calls
留空(因为它可以为空).如何让表格符合模型规格?