如何根据相关对象设置 POST 请求的截止时间



我有两个相关的模型,如下所示:

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',
    )

如果实例不存在,则正在创建该实例,否则将进行更新。

查看文档。

最新更新