相关疑难解决方法(0)

django模型表单对象的自动创建日期?

自动设置对象的创建日期的最佳方法是什么,以及将在上次更新对象时记录的字段?

在我的模型中,我有:

created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
Run Code Online (Sandbox Code Playgroud)

在我看来:

if request.method == 'POST':
    form = MyForm(request.POST)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.user = request.user
        obj.save()
        return HttpResponseRedirect('obj_list')
Run Code Online (Sandbox Code Playgroud)

我收到错误:

objects_object.created_at may not be NULL
Run Code Online (Sandbox Code Playgroud)

我是否必须自己手动设置此值?我认为这是传递给DateTimeFields的参数点(或者它们只是默认值,因为我设置'editable = False'它们不会显示在表单上,​​因此不会在请求中提交,因此不要进入表格?).

这样做的最佳方法是什么?一个init方法?

谢谢

ps - 我是django和Python的新手......

python django django-models

126
推荐指数
2
解决办法
8万
查看次数

Django admin:如何在模型中显示标记为editable = False'的字段?

即使字段标记为'editable=False'模型,我希望管理页面显示它.目前它完全隐藏了这个领域..如何实现这一目标?

django django-admin

89
推荐指数
4
解决办法
4万
查看次数

DateTimeField不会显示在管理系统中

为什么我的"日期"字段没有出现在管理系统中?

在我的admin.py文件中

from django.contrib import admin
from glasses.players.models import *
admin.site.register(Rating)
Run Code Online (Sandbox Code Playgroud)

而评级模型有一个名为"日期"的字段,如下所示

date = models.DateTimeField(editable=True, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

但是在管理系统中,即使editable设置为,该字段也不会显示True.

有谁有想法吗?

python django admin django-admin

74
推荐指数
6
解决办法
3万
查看次数

Django:时区问题

注意:我删除了之前存在的问题,并在此处仅提供相关信息.

我们的数据库服务器(RH)指定了TIME_ZONE ="Europe/London".并且,在Django settings.py中,我们指定TIME_ZONE ="America/New_York".

并且,在我的Model类中,我指定了:

created = models.DateTimeField(editable=False,auto_now=False, auto_now_add=True)
modified = models.DateTimeField(editable=False,auto_now=True, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

当我再去查看管理站点中的数据时,我得到UTC/GMT时间而不是东部时间.

我认为所有的时间都是由Django自动调整的,因为我将"America/New_York"指定为Django的时区.

任何帮助/澄清表示赞赏.

谢谢Eric

django timezone

11
推荐指数
1
解决办法
2万
查看次数

Django DateTimeField auto_now_add无效

在其中一个模型中,我设置了一个时间戳字段,如下所示:

created_datetime = models.DateTimeField(auto_now_add = True)
Run Code Online (Sandbox Code Playgroud)

虽然在shell中我能​​够创建一个obj并保存它,但是在我的应用程序中它引发了一个异常,即created_datetime字段不能为null.

事情出了问题困惑!! 如何重新获得它.

python django datetime model

11
推荐指数
2
解决办法
8637
查看次数

是否启用了auto_now_add选项的DateTimeField必须在fixture中具有值

我有模型创建的字段可配置如下:

created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

在JSON fixture中我不想为create创建值,但是当我尝试加载fixture(loadata)时,我收到错误:

created可能不是NULL

所以我必须在灯具中提供创造价值或者还有其他方法吗?

django django-models django-fixtures

10
推荐指数
1
解决办法
3375
查看次数

Django:datetime.now()模型对象保存中的时间不一致

在此处输入图片说明

上面是我在管理界面中的表之一,按降序排列id(最近的记录在顶部)。这是我用来创建模型对象并保存的方法。

notification = Notification(from_user=from_user, to_user=to_user,
                            created_date=datetime.now())
notification.save()
Run Code Online (Sandbox Code Playgroud)

该表的所有插入Notification操作仅在各种post_save信号处理程序中完成。会引起这样的不一致吗?

TIME_ZONE = 'GMT'在django 1.3.2中使用。我可以尝试使用auto_now_add=True模型中的选项,但在此之前,我只是想知道为什么会这样。

python django datetime django-models

3
推荐指数
1
解决办法
6509
查看次数

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

以下是我的模型:

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字段?

python django django-forms

2
推荐指数
1
解决办法
583
查看次数

Django auto_now的行为

我有以下型号:

class MetaData(models.Model):
    created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True,
                                   related_name='%(app_label)s_%(class)s_created_by')
    updated_at = models.DateTimeField(auto_now_add=False, auto_now=True)
    updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
                                   related_name='%(app_label)s_%(class)s_updated_by')
Run Code Online (Sandbox Code Playgroud)

update_at字段也在创建时使用值完成,而不是为null.我希望只有在第一次保存/创建之后才有值.

难道我做错了什么 ?

django django-models

1
推荐指数
1
解决办法
2442
查看次数