作者:天蝎完美_主义 | 来源:互联网 | 2023-05-27 19:46
IhaveaDjango(1.8)modelthathassomeclassbasedgenericviews:list,update,delete,detail,c
I have a Django (1.8) model that has some class based generic views: list, update, delete, detail, create. https://docs.djangoproject.com/en/1.8/ref/class-based-views/
我有一个Django(1.8)模型,它有一些基于类的通用视图:列表、更新、删除、细节、创建。https://docs.djangoproject.com/en/1.8/ref/class-based-views/
On the detail or list view, I have a button that I want to do this:
在detail或list视图中,我有一个按钮,我想这样做:
- Create a copy of the object
- 创建对象的副本
- Load the data into a form and display for the user to edit/save the new object (could use the existing update or create views, or a new one?)
- 将数据加载到窗体中并显示给用户以编辑/保存新对象(是否可以使用现有的更新或创建视图,或者使用新的视图?)
I can clone the model with this info: How do I clone a Django model instance object and save it to the database?
我可以用以下信息克隆模型:如何克隆一个Django模型实例对象并将其保存到数据库中?
But I can't make the leap to get this done by starting at a view and ending at a form with the copied object data.
但是我不能通过从视图开始,以复制的对象数据结束的形式来实现这一点。
Thanks!
谢谢!
partial views.py
部分views.py
class List(ListView):
model = Announcement
template_name = 'announcements/list.html'
class Create(CreateView):
model = Announcement
form_class = AnnouncementForm
template_name = 'announcements/form.html'
def form_valid(self, form):
data = form.save(commit=False)
data.author = self.request.user
data.save()
return super(Create, self).form_valid(form)
class Update(UpdateView):
model = Announcement
form_class = AnnouncementForm
template_name = 'announcements/form_update.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(Update, self).dispatch(*args, **kwargs)
partial forms.py
部分forms.py
class AnnouncementForm(forms.ModelForm):
class Meta:
model = Announcement
exclude = ['author']
partial list.html
部分list.html
{% for object in object_list %}
object.title
Delete
Edit
Copy
{% endfor %}
What I hit the "Copy" button in list.html, I want to duplicate the object and open the new duplicate in a form for editing.
我点击列表中的“复制”按钮。html,我想复制这个对象,并在一个窗体中打开新的副本以供编辑。
2 个解决方案