Обновление в существующую базу данных не работает

У меня есть страница, на которой пользователи могут добавить новый номер mco, когда пользователь нажимает на кнопку Add mco, он получает id, как показано ниже:

enter image description here

но когда пользователь добавляет новый номер mco и нажимает на кнопку отправки, он создает еще одну строку и не обновляется в базе данных id, как показано ниже, почему это так и как мне решить эту проблему?

enter image description here

views.py

@login_required()
def AddMCO(request, id):
    photo = get_object_or_404(Photo, id=id)
    if request.method == "POST":

        form = AddMCOForm(request.POST)
        if form.is_valid():
            mcoNum = form.cleaned_data['mcoNum']
            form.save()

            return redirect('ViewMCO')

    else:
        form = AddMCOForm()
    context = {
        "form": form,
        "photo": photo

    }
   
    return render(request, 'AddMCO.html', context, )

forms.py

class AddMCOForm(forms.ModelForm):

    mcoNum = forms.CharField(
        label='Enter MCO Number',
        widget=forms.TextInput(
            attrs={
                'class': 'form-control',
                'placeholder': 'Please enter MCO Number here..'
            }
        )
    )
    class Meta:
        model = Photo
        fields = ("mcoNum",)


    def __init__(self, *args, **kwargs):
        super(AddMCOForm, self).__init__(*args, **kwargs)
        self.fields['mcoNum'].widget.attrs.update({'class': 'form-control', 'placeholder': 'MCO Number'})
        self.fields['mcoNum'].label = ''
        self.fields['mcoNum'].help_text = ''

AddMCO.html

models.py

class Photo(models.Model):
    STEP1 = "Reception"
    STEP2 = "Launching"

    STATUS = (
        (STEP1, 'Reception'),
        (STEP2, 'Launching'),

    )

    Datetime = models.DateTimeField(auto_now_add=True)
    mcoNum = models.TextField() #mcoNum stand for MCO number
    serialno = models.TextField()  # serialno stand for serial number
    partno = models.TextField()  # partno stand for part number
    reception = models.TextField()
    Customername = models.TextField() #Custoner Name
    status = models.CharField(max_length=20, choices=STATUS, default=STEP1, editable=False)

    def __str__(self):
        return self.reception

Вы не указали версию Django и какая база данных используется.

Проверьте, может ли это помочь вам. Django не обновляет базу данных

вы не передаете экземпляр форме, если, конечно, фотомодель имеет addMCO Form в качестве модели формы.

@login_required()
def AddMCO(request, id):
    photo = get_object_or_404(Photo, id=id)
    if request.method == "POST":

        form = AddMCOForm(request.POST, instance=photo)
        if form.is_valid():
            mcoNum = form.cleaned_data['mcoNum']
            form.save()

            return redirect('ViewMCO')

    else:
        form = AddMCOForm(instance=photo)
    context = {
        "form": form,
        "photo": photo

    }


return render(request, 'AddMCO.html', context, )
Вернуться на верх