Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Как правильно убрать связь ForeignKey?

Приветствую!

Имеется модель для статей следующего вида:
class Article(models.Model):
    slug = models.SlugField(max_length=150, unique=True)
    title = models.CharField(max_length=150, db_index=True)
    description = models.TextField(blank=True, db_index=True)
    parent = models.ForeignKey('self', on_delete=models.CASCADE)


Поставил Django REST framework, написал функцию создания и редактирования статей. Создал 2 статьи:
{
    "articles": [
        {
            "slug": "page-title-1",
            "title": "Page title 1",
            "description": "Page description 1",
            "parent_id": null
        },
        {
            "slug": "page-title-2",
            "title": "Page title 2",
            "description": "Page description 2",
            "parent_id": null
        }
    ]
}


Отправляю запрос на изменение статьи id=2 так, чтобы она стала дочерней статьи id=1:
{
    "article": {
    	"slug": "page-title-2",
        "title": "Page title 2",
        "description": "Page description 2",
        "parent_id": 1
    }
}


Данные статьи успешно изменились, поле parent_id содержит значение 1. Пробую провести манипуляцию обратно (отвязать связь между статьями), отправляю:
{
    "article": {
    	"slug": "page-title-2",
        "title": "Page title 2",
        "description": "Page description 2",
        "parent_id": null
    }
}

{
    "parent_id": [
        "This field may not be null."
    ]
}

Не может быть null, не вопрос. Но как тогда правильно убрать связь между статьями?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
alternativshik
@alternativshik
в сериализаторе allow_null=True
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
может стоит разрешить parent быть null ?

parent = models.ForeignKey('self', null=True, on_delete=models.CASCADE)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы