【问题标题】:How to set default value in relationship如何在关系中设置默认值
【发布时间】:2020-05-21 08:34:26
【问题描述】:

我有关系 1 -> M(案例 -> 文档),当我创建新文档时如何设置默认关系。 我的目标是: 我有一个案例列表,我打开一个案例并创建新文档以防万一,该文档具有默认值(非空白)且文档已打开。

我有

我想要(默认)

view.py

def sprawa(request, id):
    users = get_object_or_404(User, pk=id)
    users.save()
    cases = get_object_or_404(Case, pk=id)
    cases.save()
    documents = Dokument.objects.all()

    return render(request, 'sprawa.html', {'users': users, 'cases': cases, 'documents': documents})

def new_document(request):
    form = NewDocumentForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        form.save()
        return redirect('/sprawy/')
    return render(request, 'nowydokument.html', {'form': form})

nowydokument.html

<form method='POST' enctype='multipart/form-data'>
            {% csrf_token %}
            {{ form.as_p }}

      <button type="submit">Dodaj sprawę</button>
</form>

【问题讨论】:

    标签: python django python-3.x


    【解决方案1】:

    我认为创建表单实例时您想要的是initial

    查看 Django 文档:https://docs.djangoproject.com/en/2.2/ref/forms/api/#dynamic-initial-values

    还有这个 StackOverflow 问题: Setting the selected value on a Django forms.ChoiceField

    一种方法是在创建表单时添加,或者如果值始终相同,您可以直接将其添加到表单中。

    def new_document(request):
    form = NewDocumentForm(request.POST or None, request.FILES or None, initial={"field_name": "field_value"})
    if form.is_valid():
        form.save()
        return redirect('/sprawy/')
    return render(request, 'nowydokument.html', {'form': form})
    

    【讨论】:

      【解决方案2】:

      如果您想为所有新文档设置特定案例默认值,那么您可以从 model 中执行此操作。

      DEFAULT_CASE_ID = 1
      class Document(models.Model):
          ...
          case = models.ForeignKey("Case", default=DEFAULT_CASE_ID)
      

      但是您想在表单上创建级别默认值,您可以从 视图 中做到这一点:

      DEFAULT_CASE_ID = 1
      form = NewDocumentForm(request.POST or None, request.FILES or None, initial={'case': Case.objects.get(id=DEFAULT_CASE_ID)})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-10
        • 2019-06-21
        • 2018-05-23
        • 2015-01-31
        • 2014-12-05
        • 2021-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多