0

在模型中,我有整数字段。该字段值的含义是“自 1.1.1970 以来的天数”,因此我想在管理界面中将其显示为日期AdminDateWidget,以便更轻松地选择日期。

我唯一的想法是创建新的小部件以将整数转换为日期:

class ExpireWidget(AdminDateWidget):
    def render(self, name, value, attrs=None):
        if isinstance(value, (int, long)):
            value = datetime.date(1970, 1, 1) + datetime.timedelta(value)
        return super(ExpireWidget, self).render(name, value, attrs)

以及以下代码admin.py

class LdapUserAdminForm(forms.ModelForm):
    class Meta:
        widgets = {
            'shadow_expire': ExpireWidget
            }

当我在管理日期中显示它时,一切都很好,但在我保存它之前,我应该将日期转换为整数。我认为我可以使用clean_field_name函数来实现它,但是之前执行了一些验证clean_field_name(是clean()吗?)并且我收到错误,我应该输入整数值。

在验证之前我应该​​如何将日期转换为 int?

4

1 回答 1

1

每个小部件都有从 POST/GET 取回数据并转换该数据以进行表单验证的方法。

是方法def value_from_datadict(self, data, files, name)

你可以在这里看到它的使用:Pseudo-form in Django admin that generate a json object on save

于 2012-03-11T21:04:06.653 回答