CodeLover
CodeLover

Reputation: 97

Django is Inserting Record instead Of Updating

I am trying to perform crud operations but when i try to update then django add's a new row in the db with the new pk 'id'. I am using autofield set to primary_key = True(default).

@login_required
def edit(request,id):
    note = UserCreatedNote.objects.filter(pk=id,user=request.user)
    if request.method == 'POST':
        form = AddNoteForm(request.POST,note[0])
        if form.is_valid():
            
            form_data = form.save(commit=False)
            form_data.user = request.user //cause i have excluded this field in form.
           
            
            
            form_data.save()
      
   
    
   
    form = AddNoteForm(instance=note[0])
    context={'note':note[0],'u_form':form}
    
    return render(request,'edit_note.html',context)

Models.py

class UserCreatedNote(models.Model):
    user = models.ForeignKey(get_user_model(),on_delete=models.CASCADE)
    note_title = models.CharField(default='',max_length=100,blank=True,null=True)
    note_tags = models.CharField(default='',max_length=20,blank=True,null=True)
    note_contents = RichTextField(default='',max_length=1000,blank=True,null=True)
    creation_time = models.DateTimeField(auto_now_add=True)
    last_modified_time = models.DateTimeField(auto_now=True)
    class Meta:
        
        ordering = ['creation_time',]
    def __str__(self):
        return str(self.user)

Upvotes: 2

Views: 40

Answers (1)

Arjun Shahi
Arjun Shahi

Reputation: 7330

You have to pass the note object as an instance to update.

form = AddNoteForm(request.POST,instance=note[0])

Upvotes: 1

Related Questions