我用Django和VueJs做一个项目。我有一个字段不能为空的问题,但我不明白为什么。
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")
我的问题"字段不能为空"在"echeance"字段上。 你可以看到我在评论中有 4 行,因为 => 不起作用,所以我这样做: echeance = 序列化程序。DateTimeField(format = "%Y-%m-%dT%H:%M:%S"( 我想我的问题来了...
你知道为什么"echeance"不能为空吗?
谢谢的
编辑:当我尝试通过用户界面和 api django rest 框架字创建新的"tache"时,我遇到了此错误。但是我可以由 django 管理员创建一个新的"tache"......当我在 API 中看到"tache"时,"echeance" = null。 我迷路了...
解决方案:我已将"echeance"的模型字段更改为日期字段。在我更改序列化程序后:echeance = 模型。DateField(format = "%d/%m/%Y", allow_null=True, required=False(。我只有日期而不是时间,但这是工作。
你必须提到allow_blank和allow_true
试试这个
echeance = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S", required=False, read_only=True)