追加数据而不是替换为 UpdateView Django



简单的问题,每当我尝试更新我的视图时,在这种情况下,通过添加更多用户UpdateView替换以前的记录并添加选定的记录。为了避免这种情况,我需要选择那些已经在 db 中的和一个新的。如何避免替换,并将数据附加到数据库?

views.py

class AddPersonView(LoginRequiredMixin, UpdateView):
    model = Trip
    template_name = 'tripplanner/add_new_member.html'
    fields = ["profile"]
    success_url = '/'
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

urls.py

   path('trip/<int:pk>/add_person/', AddPersonView.as_view(), name='new-trip-member'),

我以前有同样的要求,但我正在使用 DRF 并且能够使其工作。在 django 中,你可以尝试下面的代码。

由于您已经提到需要添加多个用户,因此您必须将该字段设置为多对多或一多(外键(。

下面的示例可能会对您有所帮助,它未经测试,请根据需要进行修改

models.py

class Trip(models.Models):
    authors= models.ManyToManyField(User, related_name='authors') # list of users will be appended to this field

views.py

class AddPersonView(LoginRequiredMixin, UpdateView):
    model = Trip
    template_name = 'tripplanner/add_new_member.html'
    fields = ["profile"]
    success_url = '/'
    def form_valid(self, form):
        instance = form.save(commit=False)
        instance.authors.add(self.request.user)
        return super(AddPersonView,self).form_valid(form)

最新更新