【问题标题】:Why isn't this creating the models in batch?为什么不批量创建模型?
【发布时间】:2023-03-13 12:44:01
【问题描述】:

我正在尝试批量创建对象空白,但在我填写表格后它只创建一个对象,有人可以帮助我解决我做错了什么吗?

html

{% block content %}
    <form class="box" method = "post">
        {% csrf_token %}
        <h1>Air Ticket Sales</h1>
        {{ form }}
        batch size:
        <input type="number" name="batch" value="{{ batch }}">
      <input type="submit" name="" value="Create Blank">

    </form>
{% endblock %}

型号

class blank(models.Model):
    #an integer field that automatically increments by itself as the object are created
    number = models.AutoField(primary_key=True)
    type = models.CharField(max_length=50, choices=type_choices, default='green')
    is_sold = models.BooleanField(default=False)
    is_refunded = models.BooleanField(default=False)
    date = models.DateField(auto_now_add=True)
    date.editable = True
    advisor = models.ForeignKey(
        User,
        models.SET_NULL,
        blank=True,
        null=True,
    )

查看

def create_blanks(request):
    if request.method == 'POST':
        #initializes the data from the form to the value form
        form = blank_form(data=request.POST)
        batch = request.POST.get("batch", "")
        if form.is_valid():
            for b in batch:
                form.save()
            return render(request, "create_blanks.html")
        else:
            return render(request, "create_blanks.html")
    else:
        form = blank_form
        return render(request, "create_blanks.html", {'form':form})

【问题讨论】:

  • 呃,你把 same 表单保存了多次...
  • AutoField 不应该自动递增吗?
  • 但是对象被赋予了一个主键,因此第二次保存将是一个UPDATE ... 查询。
  • 我还能做些什么来保存一个新的吗?
  • 再次将主键设置为None(所以form.instance.None)。但是for b in batch 看起来也很奇怪。你可能想要for b in range(int(batch)) 或类似的东西?

标签: django forms post django-models size


【解决方案1】:

是的,刚刚在您的帮助下找到了解决方案

for b in range(int(batch)):
            form.save()
            form.instance = None
            form = blank_form(data=request.POST)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-17
    • 2016-08-15
    • 2011-04-06
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多