I want to only save the records I update via the formset. At the moment ALL my updated_by fields change to the User that is logged in, not just the ones I change in the form.
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']