Python 默认django模型使用上一条记录中的值存档

Python 默认django模型使用上一条记录中的值存档,python,django,forms,django-models,field,Python,Django,Forms,Django Models,Field,我有一个应用程序可以跟踪时间,其中一个条目(称为begin_sec)应该(或默认为)前一个条目的变量(称为end_sec)的值(除非它是第一个条目,这种特殊情况只会发生一次) 这是我的模型 TimeLog(model.Model); begin_sec= models.DateTimeField( auto_now=False, auto_now_add=False,

我有一个应用程序可以跟踪时间,其中一个条目(称为begin_sec)应该(或默认为)前一个条目的变量(称为end_sec)的值(除非它是第一个条目,这种特殊情况只会发生一次)

这是我的模型

TimeLog(model.Model);
    begin_sec= models.DateTimeField( auto_now=False,
                                   auto_now_add=False,
                                   default=?
                                   help_text="YYYY-MM-DD HH-MM-SS")
    end_sec = models.DateTimeField( auto_now=False,
                                   auto_now_add=False,
                                   default=?
                                   help_text="YYYY-MM-DD HH-MM-SS")

    ... other parts of the model.          
因此,当我添加这种类型的新条目时,第一次以用户身份打开应用程序时,我可以将开始时间默认值设置为now(),并且可以选择结束秒,但在第二次及以后,我希望开始秒/默认值设置为最后一个条目的结束秒。
如何实现这一点?

在本例中,不要指定
默认值。最好的方法是在模型表单
save
方法中:

class TimeLogForm(forms.ModelForm):
    class Meta:
        exclude = ['begin_sec']
        model = TimeLog

    def __init__(self, *args, **kw):
        super(TimeLogForm).__init__(self, *args, **kw)

    def save(self, *args, **kw):
        instance = super(TimeLogForm, self).save(commit=False)
        last_entry = TimeLog.objects.all().order_by('-id')[0]
        if last_entry:
            instance.begin_sec = last_entry.begin_sec
        else:
            # this is the very first record do something
            pass
        instance.save()
        return instance

另外,您不需要为这两个字段设置
auto\u now=False
auto\u now\u add=False
,默认情况下,它们都是
False

不应该是def\uuuuuuuuuuuuuuuuuuu。而是def\uuuuuuuuuuuuuuu?@mike yes应该是
\uuuuuuuuuuuuuu init\uuuuuuuuu
。对不起,我打错了。我现在已经修好了。我不知道这是否应该是一个单独的问题,假设我想按请求过滤对象。用户我该怎么做?TimeLog.objects.all().order_by('-id')[0]@mike使用这个
TimeLog.objects.filter(user__id=user.id)。order_by('-id')[0]
如果你发布实际的模型会更好,这样,如果你不理解,我可以给你准确的查询,以按用户进行筛选。我能够找到答案,所以不用担心。