gpt4 book ai didi

python - 为什么带有 auto_now_add 的 DateTimeField 无法进入表单字段

转载 作者:行者123 更新时间:2023-11-28 21:36:44 26 4
gpt4 key购买 nike

以下是我的模型:

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)

表格:

class MyForm(forms.Form):
class Meta:
model = MyModel
fields = '__all__'

查看

class MyView(View):

def get(self, request):
form = MyForm(request=request)
return render(request, 'test_manager/testrule_form.html', {'form': form})

当我显示此表单时,我能够看到除 created_at 之外的所有字段。有谁知道如何在更新特定对象时获取 created_at 字段?

最佳答案

如果您指定 auto_now=Trueauto_now_add=True,那么您同时将字段设置为 editable=False。因此,这意味着它不会显示在表单中。

可能一个最小的变化是通过使用一个函数来指定一个默认值,而不是使用auto_now_add=True属性,比如:

<b>from django.utils import timezone as tz</b>

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,
<b>default=tz.now</b>)

请注意,我们调用now(..) 函数。如果我们这样做,那么我们将在构建模型(不是模型的实例)时将 created_at 列设置为时间戳。通过传递对 now(..) 函数的引用,该函数将在添加新模型实例时被调用。

关于python - 为什么带有 auto_now_add 的 DateTimeField 无法进入表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50603619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com