The*_*eve 6 python django django-templates django-models django-views
我决定使用Django-Simple-History来建立我的模型的历史.反过来使用它来构建仪表板.我遇到了一些障碍.我正试图在[时间]输出[用户] [添加,更改,删除] [对象],但我无法弄清楚我的生活.
到目前为止,我能够在模板上显示历史记录,但我无法访问其他任何内容,我错过了什么?
我希望有简单历史知识的人可以提供帮助,因为我无法掌握作者.
这是我到目前为止的代码片段.
Models.py
from simple_history.models import HistoricalRecords
class Project(django.db.models.Model):
...
history = HistoricalRecords()
Run Code Online (Sandbox Code Playgroud)
Views.py
@login_required
def addTMProject(request):
user = request.user
if request.method == 'POST':
form = TimeMaterialsForm(request.POST)
if form.is_valid():
project = form.save(commit=False)
project.created_by = request.user
today = datetime.date.today()
project.pre_quote = "%s-" % (str(today.year)[2:4])
project.quote = Project.objects.latest().quote+1
project.save()
project.history.all()
...
Run Code Online (Sandbox Code Playgroud)
我也在我的仪表板/ views.py上传递了它,所以我可以访问它.
@login_required
def view_dash(request):
today = datetime.date.today()
user = request.user
proj_perm = user.has_perm('project.add_project')
project = Project.objects.all().order_by('-proj_name')
query = Project.objects.all().order_by('-id')[:5]
que_quotes = Project.objects.filter(status__value__exact = 'Quote')
expired = FollowUp.objects.filter(next_followup__lte=today).order_by('next_followup').filter(archived=False)
log = LogEntry.objects.select_related().all().order_by("-id")
hist = Project.history.all()
return render_to_response('dashboard/home.html', {'user': user, 'project': project, 'query':query, 'que_quotes':que_quotes, 'expired':expired,
'proj_perm':proj_perm, 'log': log, 'hist':hist,}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
最后是我模板中的一个片段.就像现在一样,{{h}}在模板上显示"从2011-04-29 10:43:57开始测试简单记录"
home.html的
{% if user.is_authenticated %}
<div id="large_box">
<h5>Activity</h5>
{% for h in hist %}
<ul>
<li>{{ h }}</li>
</ul>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助或指出我更深入的文档,那就太棒了!
感谢大家!
Django的简单历史只是简单地创建一个反映你把它绑的对象,并将另外四场模型(以及相关的数据库表)history_id,history_date,history_type,和history_object.
history_id:标准主键
history_date:更改发生时的日期时间
history_type:一+,~,-.(+表示已添加,~表示已更改,-表示已删除)
history_object:表示存储历史记录的模型
因此,在大多数基本级别,您可以在输出中粗略地获得"[添加,更改,删除] [对象]/[时间]",使用以下效果:
{{ h.history_type }} {{ h.history_object }} on/at {{ h.history_date }}
Run Code Online (Sandbox Code Playgroud)
你可能要创建模板标签或东西转换+,~以及-对更容易理解,"创造","改变","删除".{{ h.history_object }}应该返回对象的__unicode__,我假设,所以你可能需要做一些修改有或返回类似{{ h.history_object.__class__ }}或{{ h.history_object._meta.verbose_name }}代替.(不确定这些是否真的可以在实践中发挥作用.)当然,您可以应用date过滤器{{ h.history_date }}来使其成为您想要的任何格式.
获得用户更加困难.Django-Simple-History似乎不存储这些数据,因此没有用户进行修改的记录.但是,由于它基本上复制了存在的对象,因此您可能可以通过向modified_by模型添加字段并使用request.user预存储来填充该字段.然后,当Django-Simple-History完成它的事情时,该字段将像其他字段一样被复制并可通过{{ h.modified_by }}.
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |