【发布时间】:2022-11-16 21:15:03
【问题描述】:
实现用户选择现有记录的功能的最佳方式是什么作为模板为了创造一个新的?
理想情况下,我想要一个 ListView 中所有现有记录的列表,并且用户单击这些记录之一并被带到 CreateView,其中字段被填充为所选记录的值作为新的默认值,起始值。
这个方法本质上是一个标准的 ListView-to-UpdateView 但是 save 方法会创建一个新记录而不是更新吗?
模型.py
class movies(models.Model):
fk_user = models.ForeignKey(User, default='1', on_delete=models.CASCADE)
title = models.CharField(max_length=250)
fk_producer = models.ForeignKey(producers, default='1', on_delete=models.CASCADE)
def __str__(self):
return self.title
class Meta:
ordering = ('-id', )
视图.py
class movies_create(LoginRequiredMixin, CreateView):
model = movies
fields = ['title', 'fk_producer']
template_name = 'movies_create.html'
def form_valid(self, form):
form.instance.fk_user = self.request.user
form.save()
# return super().form_valid(form)
return HttpResponseRedirect(self.request.path_info)
def get_form_class(self):
if self.request.GET.get('copy_object'):
copy_object = movies.objects.get(id=self.request.GET.get('copy_object'))
return MyFormClass(instance=copy_object)
else:
return MyFormClass
【问题讨论】:
标签: django django-views