Django copy object: func с self.id в html, urls и представлениях
Я пытаюсь скопировать свой объект. Я могу получить копию из моего "def checklist_copy", если я явно укажу pk.(пример)
Но я пытаюсь работать с 'self.pk' и это не работает. Я хочу скопировать объект, под которым я нажимаю на кнопку
я использовал различные вариации: (pk=pk) в функции,
checklist.id и checklist.pk в html-шаблоне,
пробовал передать "self" в функцию и сделать self.pk
выполнение pk=int(Checklist.object.get.id()), чтобы затем передать это "pk" в (pk=pk) в object.id()
try include func in class DetailView
не достиг результата
Помогите пожалуйста. Я не знаю где и что искать
Пример:
models.py
from django.urls import reverse
from django.db import models
class Checklist(models.Model):
title = models.CharField(max_length=250)
def get_absolute_url(self):
return reverse ('checklist:checklist', kwargs={'id': self.id, 'title': self.title})
def __str__(self):
return self.title
view.py
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from .models import Checklist
from django.shortcuts import redirect
from django.urls import reverse_lazy
class CheckListView(ListView):
model = Checklist
context_object_name = 'checklists'
class CheckListDetail(DetailView):
model = Checklist
context_object_name = 'checkList'
template_name = 'base/checklist.html'
def checklist_copy(request):
dest = Checklist.objects.get(pk=2) #here i need to use self.id(pk), but can't include 'self' in args of func
dest.pk = None
dest.save()
return redirect(reverse_lazy('checklists'))
urls.py (мое приложение)
from django.urls import path
from .views import CheckListView, CheckListDetail
from . import views
urlpatterns = [
path('', CheckListView.as_view(), name='checklists'),
path('checklist/<int:pk>/', CheckListDetail.as_view(), name='checklist'),
path('checklist-copy/', views.checklist_copy, name='checklist_copy'),
]
checklist_list.html
<div id="tasklist" class="task-items-wrapper">
{% for checklist in checklists %}
<div class="task-wrapper" data-position="{{checklist.pk}}">
<div class="task-title">
<a href="{% url 'checklist' checklist.pk %}">{{checklist}}</a>
</div>
</div>
<a class="task-wrapper" href="{% url 'checklist_copy' %}">Copy</a>
{% endfor %}