我正在使用Django和VueJs进行项目。我有一个字段不能为null的问题,但我不明白为什么。
models.py
from django.db import models
from django.conf import settings
class Tache(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
echeance = models.DateTimeField(null=True, blank=True)
titre = models.CharField(max_length=240)
sous_titre = models.CharField(max_length=240, null=True, blank=True)
content = models.CharField(max_length=240)
fait = models.BooleanField(default=False)
slug = models.SlugField(max_length=255, unique=True)
author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="taches")
def __str__(self):
return self.content
serializers.py
from rest_framework import serializers
from taches.models import Tache
class TacheSerializer(serializers.ModelSerializer):
author = serializers.StringRelatedField(read_only=True)
created_at = serializers.SerializerMethodField(read_only=True)
# echeance = serializers.SerializerMethodField()
echeance = serializers.DateTimeField(format = "%Y-%m-%dT%H:%M:%S")
slug = serializers.SlugField(read_only=True)
class Meta:
model = Tache
exclude = ["updated_at"]
def get_created_at(self, instance):
return instance.created_at.strftime("%d" + "/" + "%m" + "/" + "%Y")
# def get_echeance(self, instance):
# if instance.echeance != None:
# return instance.echeance.strftime("%Y-%m-%dT%H:%M:%S")
我的问题“字段不能为空”在“回显”字段上。您可以看到我在注释中有4行,因为=>不起作用,所以我这样做了:echeance = serializers.DateTimeField(格式=“%Y-%m-%dT%H:%M:%S”)我认为我的问题来了...
您是否知道为什么“ echeance”不能为空...?
谢谢
编辑:当我尝试通过用户界面和api django rest框架字创建新的“ tache”时,出现此错误。但是我可以由django管理员创建一个新的“ tache”。当我在api中看到“ tache”时,“ echeance” = null。我迷路了...
您必须提及allow_blank和allow_true
尝试一下
echeance = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S", required=False, read_only=True)