【发布时间】:2015-03-25 10:41:52
【问题描述】:
我正在使用 django 开发一个 webapp。通常,我想跟踪用户为项目投入了多少时间。因此,当用户开始工作时,我在数据库中向用户、项目以及他开始工作的时间注册了一个“更改”对象。现在,如何将相同的“更改”对象获取到不同的视图以记录结束时间?在我的最佳尝试中,我得到了“IntegrityError NOT NULL 约束失败”。代码如下:
views.py
@login_required
def main(request):
context = RequestContext(request)
user=request.user
if request.method=='POST':
projectid=request.POST['project']
project = Project.objects.get(pk=int(projectid))
if project:
change=Change(user=user, project=project,starttime=datetime.now())
change.save()
#return HttpResponse("I \'ve already start counting... You \'ve wasted 5 seconds already. Just joking. I don\'t know how to count...")
return render_to_response('ProjectLogging/timer.html', {'change':change}, context_instance=RequestContext(request))
else:
HttpResponse("Choose a valid project!")
else:
HttpResponse("Choose a POST method (???????)")
@login_required
def timer(request, change):
user=request.user
# schange=request.change
if request.method=='POST':
change=Change(endtime=datetime.now())
change.save()
return render_to_response('ProjectLogging/main.html',{'user':user, 'project_list':Project.objects.all()}, context_instance=RequestContext(request))
else:
return HttpResponse("Something went wrong with timer view.")
urls.py
urlpatterns=patterns('ProjectLogging',
url(r'^$', 'views.login', name="index"),
url(r'^login/$', 'views.login', name="login"),
url(r'^logout/$', 'views.logout', name="logout"),
url(r'^main/$','views.main', name="main"),
url(r'^timer/$', 'views.timer', {'change':'change'}),
)
和改变模型
class Change(models.Model):
user=models.ForeignKey(User)
project=models.ForeignKey('Project')
starttime=models.DateTimeField(null=True,blank=True)
endtime=models.DateTimeField(null=True, blank=True)
flagged=models.BooleanField(default=False, db_index=True)
def __repr__(self):
return ('Change in project %r from %r' % (self.project.title, self.user.username))
def __unicode__(self):
return ('%r in project: %r' % (self.user.get_full_name(), self.project.title))
def user_changes(self, user):
return self.filter(user==user)
对不起,原始代码。我是 Django 和 Python 的新手。
【问题讨论】:
-
我得到的“完整性错误”是因为服务器等待一个全新的“更改”对象并且没有检索到我想要的对象。
-
用户一次只能激活一个更改项吗?
-
我不确定我是否理解你的问题,但可能没有。