怎么让Django在admin中添加staffinfo类时,其属性值birth由身份证号的第七位到第14位自动填充?
时间: 2024-03-27 18:40:44 浏览: 76
django admin添加数据自动记录user到表中的实现方法
你可以在staffinfo类中使用Django的ModelAdmin类的formfield_overrides属性来覆盖birth字段的默认表单控件。具体来说,你可以定义一个自定义的表单控件,用于将身份证号的第七位到第14位自动填充到birth字段中。
以下是示例代码:
```python
from django.forms import TextInput
class BirthInput(TextInput):
def value_from_datadict(self, data, files, name):
id_card = data.get('id_card')
if id_card:
return id_card[6:14]
return super().value_from_datadict(data, files, name)
class StaffInfoAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateField: {'widget': BirthInput},
}
```
在上面的代码中,我们定义了一个名为BirthInput的自定义表单控件,并重写了value_from_datadict方法以从id_card字段中提取出身份证号的第七位到第14位,并将其作为birth字段的初始值。然后,我们将BirthInput控件应用于DateField字段,以覆盖默认的DateInput控件。
请注意,上述代码仅用于示例目的。如果你要使用此代码,请根据实际情况进行修改和调整。
阅读全文