簡體   English   中英

Django:在UpdateView中使用post()使用實例的現有字段值填充表單的字段

[英]Django: Use post() in UpdateView to populate form's fields with instance's existing field values

我無法在UpdateView上獲取當前實例的字段。 如何根據其ID獲取特定實例?

views.py

class ShowUpdate(UpdateView):
  model = Show
  fields = ['description', 'season', 'episode']

  def post(self, request, **kwargs):
      request.POST = request.POST.copy()
      request.POST['description'] = "how to get instance description?" # problem here
      request.POST['season'] = 2
      return super(ShowUpdate, self).post(request, **kwargs)

models.py

class Show(models.Model):
  owner = models.ForeignKey(User, null=True, default=True, related_name='o')
  title = models.CharField(max_length=100)
  description = models.TextField(default='N/A', blank=True, max_length=250)
  season = models.IntegerField(default=0)
  episode = models.IntegerField(default=0)

  def get_absolute_url(self):
      return reverse('show:index')

  def __str__(self):
      return self.title

查看UpdateView文檔

該視圖具有方法get_object(self, queryset=None)

在您的情況下,只需要在POST方法中調用它,如下所示:

class ShowUpdate(UpdateView):
  model = Show
  fields = ['description', 'season', 'episode']

  def post(self, request, **kwargs):
      self.object = self.get_object()
      request.POST = request.POST.copy()
      request.POST['description'] = self.object.description
      request.POST['season'] = 2
      return super(ShowUpdate, self).post(request, **kwargs)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM