Как сохранить ссылку в Django при редактировании существующего объекта?

Итак, у меня есть поле в моей модели, которое ссылается на другую модель. Как показано ниже. (упрощенно)

class Contents(models.Model):
    objects = models.Manager()
    body = models.CharField(max_length=10000, blank=True)
    image = models.ImageField(null=True, blank=True, upload_to='imgs')
    created_at = models.DateField(auto_now_add=True)
    updated_at = models.DateField(auto_now_add=False)

class SavedContents(models.Model):
    objects = models.Manager()
    ref_content = models.ForeignKey(Contents, on_delete=models.CASCADE, related_name='refcontent', null=True)

Проблема в том, что связь Foreign Key, где Saved Contents ссылается на Contents, нарушается при внесении изменений в существующий объект Content. Ниже приведен мой views.py

def update_content(request, content_id):
    content_to_update = Contents.objects.get(id = content_id)

    content_form = ContentsForm(request.POST, request.FILES)
    if request.method == 'POST':
        if ans_form.is_valid():
            instance = content_form.save(commit=False)
            instance.updated_at = str(today)

            content_to_update.delete()
            instance.save()

        return redirect('/')

Я знаю, что совершенно очевидно, что ссылочное отношение удаляется, поскольку удаляется исходное отношение. Есть ли способ сохранить связь внешнего ключа между конкретным объектом Content и объектом Saved Content, независимо от того, сколько раз пользователь вносит изменения в содержимое?

Заранее спасибо.

Вам не нужно удалять экземпляр при его обновлении (Django просто обновляет строку базы данных, поэтому удаление экземпляра не имеет смысла):

from django.utils import timezone

def update_content(request, content_id):
    content_to_update = Contents.objects.get(id=content_id)

    content_form = ContentsForm(request.POST, request.FILES)
    if request.method == 'POST':
        if content_form.is_valid():
            instance = content_form.save(commit=False)
            instance.updated_at = timezone.now().date()
            instance.save()
        return redirect('/')
Вернуться на верх