Reputation: 97
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
Reputation: 7330
You have to pass the note
object as an instance to update.
form = AddNoteForm(request.POST,instance=note[0])
Upvotes: 1