【问题标题】:How do i pass a initial value from within a form to a new form?如何将表单中的初始值传递给新表单?
【发布时间】:2017-01-24 12:48:24
【问题描述】:

如果我尝试在 django 表单中添加一个新对象,我如何将初始值传递给这个新表单? 我知道如何在表单 init 上设置初始值,但我不知道如何在新表单中执行它 有什么帮助吗?enter code here

Model A
X = CharField()
Y = ForeignKey(ModelB)


Model B
Z = CharField()

设置 X 后,我会保存模型。 我能够在 ModelA 表单中添加新对象 Y,这将 打开 ModelB 的新表单。如何将 X 的值传递给我刚刚打开的这个新表单? 我需要 X 对 Z 进行过滤查询,但我找不到解决方案

编辑:

class PrecoPorEpocaForm(forms.ModelForm):
        class Meta:
            model = Preco_por_epoca
            fields = ('epoca',)

        def __init__(self, *args, **kwargs):
            super(PrecoPorEpocaForm, self).__init__(*args, **kwargs)

           #if kwargs['initial']['epoca_hotel']:
             #   print kwargs['initial']['epoca_hotel']
            #    self.fields['epoca'].queryset = Epoca.objects.filter(hotel=s)
            #print "TTTTTTTTTTTTTTT"




class TabelaPrecoForm(forms.ModelForm):

    class Meta:
        model = TabelaPrecos
        fields = ('client', 'year','hotel', 'seasonprice', 'teste')

    def __init__(self, *args, **kwargs):

        super(TabelaPrecoForm, self).__init__(*args, **kwargs)

        if self.instance.hotel != None:
             self.fields['seasonprice'].queryset = Preco_por_epoca.objects.filter(epoca__hotel = self.instance.hotel)

【问题讨论】:

  • 基本上,您需要通过对新表单的请求传递某种对象 ID。但是,您需要提供更多详细信息,以便我们提供帮助......
  • 这就是为什么我一直卡到现在,我不知道如何将实例 ID 传递给新表单
  • 你能展示你的views.py吗?您如何退出第一个表单会很有趣。
  • 刚刚编辑了问题以更好地解释情况,我正在使用 Django-Admin 视图

标签: python django forms django-models django-forms


【解决方案1】:

如果我得到正确的你想做的事,你需要扭转关系:

class ModelA(models.Model):
    X = CharField()

class Model B(models.Model):
    Z = CharField()
    model_A_ref = ForeignKey(ModelA)

然后在你的 admin.py 中做

class ModelBAdmin(admin.ModelAdmin):
   list_filter=('model_A_ref',)

admin.site.register(ModelB, ModelBAdmin)

【讨论】:

  • 我理解你的方法,但我认为它不能解决我想要做的事情。我想保持关系原样,只需将参数传递给另一个 ModelForm
  • 你能发布你的模型吗?
猜你喜欢
  • 2010-12-25
  • 2011-11-22
  • 1970-01-01
  • 2019-12-23
  • 2014-03-20
  • 2019-02-17
  • 2013-05-22
  • 1970-01-01
  • 2012-08-15
相关资源
最近更新 更多