2017-03-31 20 views
0

我有2個問題引起一點點與django-reversion應用程序comfusion。我有頁面,用戶可以看到列出所有的反轉。每個版本都有按鈕可以恢復。如何正確回覆到django-reversion中的特定版本?

1問題:如何僅顯示一些更改的字段。現在它向我展示了所有領域。我使用version.field_dict.items。

2問題:如何正確恢復到特定版本?

下面您可以看到代碼,但當我嘗試點擊以恢復鏈接時,它會在views.py中引發錯誤。我做錯了什麼?

template.html

{% for version in versions %} 
     {% for field_name, field_value in version.field_dict.items %} 
      {{ field_name }} 
      {{ field_value }} 
     {% endfor %} 
     <a href="{% url 'project:group_task_revert' project_code=project.code group_task_code=group_task.code group_task_reversion_id=version.revision.id%}">REVERT</a> 
{% endfor %} 

urls.py:

url(r'^(?P<project_code>[0-9a-f-]+)/(?P<group_code>[0-9a-f-]+)/(?P<group_reversion_id>\d+)/$', 
     group_revert, 
     name='group_revert'), 

views.py:

def group_revert(request, project_code, group_code, group_reversion_id): 
    project = get_object_or_404(Project, pk=project_code, status='open') 
    group = get_object_or_404(Group, pk=group_code) 

    versions = Version.objects.get_for_object(group) 
    versions[group_reversion_id].revision.revert() 

    return redirect('project:project_detail', project_code=project.code) 

錯誤:

Internal Server Error: /ru/account/dashboard/projects/42442299-97dd-4d92-9ef1-880f9cdd1612/4d3d3422-2618-4d66-96f5-8f0a0b5d9bf3/21/ 
Traceback (most recent call last): 
    File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner 
    response = get_response(request) 
    File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 198, in group_revert 
    versions[group_reversion_id].revision.revert() 
    File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\models\query.py", line 271, in __getitem__ 
    raise TypeError 
TypeError 

回答