Dik*_*sha 2 python django django-forms
以下是我的模型:
class MyModel(models.Model):
code = models.CharField(_('Code'), max_length=56, null=False,
blank=False, db_column='code')
name = models.CharField(_('Name'), max_length=128, null=False,
db_index=True, db_column='name', blank=False)
created_at = models.DateTimeField(_('Created At'), null=False,
db_column='created_at', blank=False,
auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
形成:
class MyForm(forms.Form):
class Meta:
model = MyModel
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
视图
class MyView(View):
def get(self, request):
form = MyForm(request=request)
return render(request, 'test_manager/testrule_form.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)
显示此表单时,我可以看到除created_at之外的所有字段。有谁知道在更新某些对象时如何获取created_at字段?
如果指定auto_now=True或auto_now_add=True,那么您editable=False将同时创建该字段。因此,这意味着它不会显示在表单中。
可能的最小变化是default使用函数而不是使用auto_now_add=True属性来指定值,例如:
from django.utils import timezone as tz
class TestRule(models.Model):
code = models.CharField(_('Code'), max_length=56, null=False,
blank=False, db_column='code')
name = models.CharField(_('Name'), max_length=128, null=False,
db_index=True, db_column='name', blank=False)
created_at = models.DateTimeField(_('Created At'), null=False,
db_column='created_at', blank=False,
default=tz.now)Run Code Online (Sandbox Code Playgroud)
注意,我们不调用该now(..)函数。如果这样做,那么我们将created_at在构建模型(而不是模型的实例)时将该列设置为时间戳。通过传递对now(..)函数的引用,添加新的模型实例时将调用该函数。
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |