当我打开第二个模型的表单时,应该进行什么查询才能从第一个模型预取数据以填充数据

时间:2018-11-21 09:05:13

标签: django python-3.x django-models django-forms django-views

models.py

class Appname(models.Model):
      name=models.CharField(max_length=150,blank=False,null=False,help_text='Add your new App')

      def __str__(self):
           return self.name

      def get_absolute_url(self):
           return reverse("dashapp:view")

class Adspace(models.Model):
      name=models.ForeignKey(Appname,related_name='adspaces', null=True, default=None,on_delete=models.CASCADE)
      ad_space=models.CharField(max_length=150,blank=False,null=False) 

      def __str__(self):
          return self.ad_space

      def get_absolute_url(self):
          return reverse("dashapp:view")

查询要

我使用两个模型的CreateView创建一个表单。对于First模型,我保存应用程序名称,然后使用ListView创建应用程序名称的列表视图并显示它们。当我从显示的列表中单击一个应用程序时,它将带我进入下一个表格,该表格适用于下一个型号Adspace。现在,我想在第二个模型的表单打开时,名称部分自动填充我单击该表单所要使用的应用程序的名称。我应该进行何种查询才能使其成为可能。请用答案解释一下。 >

1 个答案:

答案 0 :(得分:0)

如果您使用的是通用CreateView,则可以覆盖get_initial()方法来为要创建的对象设置初始值:

def get_initial(self):
    # assuming the Appname id is passed in the view's kwargs as "app_id"
    try:
        app = Appname.objects.get(id=self.kwargs['app_id'])
        return super().get_initial().update({'name': app})
    except Appname.DoesNotExist:
        return super().get_initial()