如何仅保存已更改的模型对象?

时间:2020-06-01 07:03:44

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

我只想保存通过表单集更新的记录。目前,所有我的update_by字段都更改为已登录的用户,而不仅仅是我在表单中更改的用户。

Views.py

@login_required()
def inventory_update(request):
    title = 'Update Inventory'
    UserInventoryFormset = modelformset_factory(Inventory, form=InventoryUpdateForm, extra=0)

    if request.method == 'POST':
        formset = UserInventoryFormset(request.POST)
        if formset.is_valid():
            for form in formset:
                updated = form.save(commit=False)
                updated.updated_by = request.user
                updated.save()
    else:
        formset = UserInventoryFormset()

    context = {'formset': formset,
               'title': title
               }
    return render(request, 'main/inventory_form.html', context)

Models.py

class Inventory(models.Model):
    item = models.CharField(max_length=50, unique=True)
    stock = models.IntegerField()
    par = models.IntegerField()
    date_updated = models.DateTimeField(auto_now=True)
    updated_by = models.ForeignKey(User, on_delete=models.PROTECT)

    def __str__(self):
        return self.item

Forms.py

class InventoryUpdateForm(forms.ModelForm):
    class Meta:
        model = Inventory
        exclude = ['updated_by']
        fields = ['stock', 'par']

0 个答案:

没有答案
相关问题