【问题标题】:How can I create a receiving record and create the item received in a single form in django如何在 django 中创建接收记录并以单一形式创建接收的项目
【发布时间】:2022-01-12 01:25:06
【问题描述】:

我想创建一个接收记录并创建从一个表单接收的项目:

我的模特:

class Item(models.Model):
    item_number = models.CharField(max_length=55)
    item_name = models.CharField(max_length=55)

class Receive(models.Model):
    receive_date = models.DateField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    qty = models.PositiveIntegerField()

我的模型表单:

class RecievingForm(forms.ModelForm):
    class Meta:
        model = Receive
        fields = ('item_number', 'item_name', 'receive_date', 'qty')

我的观点:

if request.method == "POST":
    form = RecievingForm(request.POST)
    if form.is_valid():
        # form.item.save() ... Here I want to create the item
        # form.receive.save() ... Here I want to create the receive record
        return redirect('receiving')
else:
    context = {
        'form': RecievingForm(),
    }
    return render(request, 'production/add_rcv.html', context)

假设每条接收记录只有1个项目,并假设该项目在数据库中不存在。

【问题讨论】:

    标签: django django-models django-views django-forms


    【解决方案1】:

    经过一些广泛的研究和反复试验,我相信自己弄明白了。

    我的模型表单:

    class ItemForm(forms.ModelForm):
        class Meta:
            model = Item
            fields = ('item_number', 'item_name')
    
    class RecievingForm(forms.ModelForm):
        class Meta:
            model = Receive
            fields = ('receive_date', 'qty')
    

    我的观点:

    if request.method == "POST":
        i_form = ItemForm(request.POST)
        r_form = RecievingForm(request.POST)
        if i_form.is_valid() and r_form.is_valid():
            this_item = i_form.save()
            this_receive.item = this_item
            this_receive.save()
            return redirect('receiving')
        context = {
            'i_form': i_form,
            'r_form': r_form,
        }
        return render(request, 'production/add_rcv.html', context)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多