我有两个相关的模型,如下所示:
Form:
name
fields
date_deadline
FormEntry:
form = ForeignKey(Form)
data
我想防止在提交截止日期后添加新条目。我在序列化程序中编写了一个验证,如下所示:
class FormEntrySerializer(serializers.ModelSerializer):
def validate(self, data):
from datetime import datetime
form = data.get('form')
if form.date_deadline and
datetime.date(datetime.today()) > form.date_deadline:
message = 'Entries can't be added after submission deadline.'
raise serializers.ValidationError(message)
return data
class Meta:
model = FormEntry
fields = (
'id', 'form', 'data',
)
它可以工作,但我也无法在提交截止日期后更新表单条目。我只想对 POST 请求进行此验证(意味着新的插入(。
我也不确定这是最好的方法。也许我必须使用权限。
我是怎么做到的?
您可以检查实例是否存在:
class FormEntrySerializer(serializers.ModelSerializer):
def validate(self, data):
from datetime import datetime
form = data.get('form')
if not self.instance and form.date_deadline and
datetime.date(datetime.today()) > form.date_deadline:
message = 'Entries can't be added after submission deadline.'
raise serializers.ValidationError(message)
return data
class Meta:
model = FormEntry
fields = (
'id', 'form', 'data',
)
如果实例不存在,则正在创建该实例,否则将进行更新。
查看文档。