简单的问题,每当我尝试更新我的视图时,在这种情况下,通过添加更多用户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)