【问题标题】:Adding new data to class in a Django model在 Django 模型中向类添加新数据
【发布时间】:2021-10-06 22:58:33
【问题描述】:

我有一个需要添加标准名称的表单,如果可以选择添加要添加的其他名称,我想为其创建另一个输入。我不确定如何针对模型执行此操作,以及迁移和创建与新名称相关的 html 以获取输入。

我用以下模型创建了表单:

    ownerName1= models.CharField(max_length=100,null=True, blank=True, verbose_name='Owner Name 1')
    ownerRole1= models.CharField(max_length=100,null=True, blank=True, verbose_name='Owner Role 1')
    ownershipPercentage1= models.IntegerField(null=True, blank=True, verbose_name='Business Phone 1')

我在 HTML 模板中添加了一个按钮以添加新股东(如果可用),因此我希望单击该按钮以在 models.py 中创建以下内容

    ownerName2= models.CharField(max_length=100,null=True, blank=True, verbose_name='Owner Name 2')
    ownerRole2= models.CharField(max_length=100,null=True, blank=True, verbose_name='Owner Role 2')
    ownershipPercentage2= models.IntegerField(null=True, blank=True, verbose_name='Business Phone 2')

如果再按一次,数字变为 3,依此类推。

后续在需要更新的形式:


class infoForm(ModelForm):
    class Meta:
        model = Info
        fields = ['ownerName1','ownerRole1','ownershipPercentage1']

下面是表格的一个例子:

                  <div class="tab-pane fade" id="ownershipStructure" role="tabpanel" aria-labelledby="pills-3-tab">
                    <h2>Ownership Structure</h2>
                    <div class="form-outline mb-4">
                      <input type="text" name="ownerName1" id="ownerName1" class="form-control"
                        {% if form.is_bound %}value="{{ form.ownerName1.value }}"{% endif %}/>
                      <label class="form-label">Name of Owner(s)/Major Shareholders:</label>
                      {% for err in form.ownerName1.errors %}
                          <small class="text-danger ml-2">{{ err }}</small>
                      {% endfor %}
                    </div>
                    <div>
                      <div class="row mb-4">
                        <div class="col">
                          <div class="form-outline mb-4">
                            <input
                              type="text"
                              id="ownerRole1" name="ownerRole1" class="form-control" {% if form.is_bound %}value="{{ form.ownerRole1.value }}"{% endif %}/>
                            <label class="form-label">Role:</label>
                            {% for err in form.ownerRole1.errors %}
                                <small class="text-danger ml-2">{{ err }}</small>
                            {% endfor %}
                          </div>
                        </div>
                        <!-- Number input -->
                        <div class="col">
                          <div class="form-outline mb-4">
                            <input
                              type="number" id="ownershipPercentage1" class="form-control" name="ownershipPercentage1" {% if form.is_bound %}value="{{ form.ownershipPercentage1.value }}"{% endif %}/>
                            <label class="form-label" for="ownershipPercentage1" style="margin-left: 0px"
                              >Ownership Percentage</label>
                            {% for err in form.ownershipPercentage1.errors %}
                                <small class="text-danger ml-2">{{ err }}</small>
                            {% endfor %}
                          </div>
                        </div>
                      </div>
                    </div>
                    <button
                      type="button"
                      class="mb-4 btn btn-primary btn-sm ripple-surface"
                    >
                      Add Shareholders
                    </button>
                  </div>

我想知道在这种情况下我能做些什么我应该如何进行?

【问题讨论】:

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


    【解决方案1】:

    首先获取它的教程,其次,每当您从表单输入数据以建模时,都会为其创建新数据,例如 dataname(1)dataname(2),那么为什么需要它来更改存储数据的字段名称本身!

    只需写在models.py

    from django.db import models
    
    class infoForm(models.Model):
        ownerName= models.CharField(max_length=100,null=True, blank=True, verbose_name='Owner Name 1')
        ownerRole= models.CharField(max_length=100,null=True, blank=True, verbose_name='Owner Role 1')
        ownershipPercentage= models.IntegerField(null=True, blank=True, verbose_name='Business Phone 1')
    

    更改您创建的所有模板和视图中的字段名称并删除旧迁移,然后在manage.py 目录的命令行中运行:

    python manage.py make migrations
    

    那么这个

    python manage.py migrate
    

    admin.py注册您的模型:

    from django.contrib import admin
    from .models import infoForm
    
    admin.site.register(infoForm)
    

    现在尝试输入数据并查看单独的字段本身已创建,例如 infoForm(1),infoForm(2),...

    在你搞砸之前获得最好的教程!

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      相关资源
      最近更新 更多