我有两个这样的相关模型:
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',
)
如果该实例不存在,则将创建该实例,否则将对其进行更新。
检查docs。