#django #django-models #django-forms
#django #django-модели #django-forms
Вопрос:
Я пытаюсь выполнять операции crud, но когда я пытаюсь обновить, django добавляет новую строку в БД с новым идентификатором pk. Я использую автозаполнение, установленное в primary_key = True (по умолчанию).
@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)
Ответ №1:
Вы должны передать note
объект в качестве экземпляра для обновления.
form = AddNoteForm(request.POST,instance=note[0])