LINUX.ORG.RU

Удалить запись

 , ,


0

1

Всем привет)!

Кто в курсе, подскажите, каким образом можно удалить запись в базе из шаблона?

views.py:

def delete_message ( request, id = "" ): 
    return request, Message.objects.get( id = int(id) ).delete()

uels.py:

url( r'^delete_message/(?P<id>\d+)/', 'delete_message', name = "delete_message" ),

шаблон:

{% if user.is_staff %}
<a class="btn btn-danger" href="{% url delete_message id=message.id %}">
Удалить тред
</a>
{% endif %}

По нажатию на кнопку удалить удаления не происходит, вываливается ошибка - 'tuple' object has no attribute 'status_code'

Замучился уже гуглить. В чем может быть проблема?

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



Последнее исправление: KernelPanic (всего исправлений: 1)

Мама, смотри, я написал двач.

anonymous
()

Проблема в непонимании происходящего.

1. Возвращать нужно response. 2. Что, по Вашему мнению, возвращает Message.objects.get( id = int(id) ).delete()? 3. Что будет, если Message с данным ID был уже удалён из базы?

Риторический вопрос: почему люди не хотят читать даже хорошую документацию?

AlexKiriukha ★★★★
()

Судя по другим темам - может сначала ознакомиться с теоретической частью?

AlexKiriukha ★★★★
()

return request, Message.objects.get( id = int(id) ).delete()

Что это, ради всего святого? Ты же не просто так это написал? И скопипастить это точно неоткуда. Какой смысл вкладывался в эту строчку?

baverman ★★★
()
Ответ на: комментарий от AlexKiriukha

Возвращать нужно response.

Спасибо, теперь работает)!

views.py:

def delete_message ( request, id = "" ):
    return HttpResponse ( Message.objects.get ( id = int(id) ).delete() )

Судя по другим темам - может сначала ознакомиться с теоретической частью?

Пока что времени нет на теорию(. Но в будещем, обязательно ознакомлюсь.

KernelPanic
() автор топика
Ответ на: комментарий от AlexKiriukha

почему люди не хотят читать даже хорошую документацию?

Это у джанги-то хорошая документация? И давно? (Заглядывал в неё года три назад последний раз.)

Apple-ch ★★
()
Ответ на: комментарий от baverman

Смотри код urls и шаблона выше

конкретно эта строка - Message.objects.get ( id = int(id) ).delete() означает сделать выборку обекта по его id из таблицы Message и затем удалить его.

KernelPanic
() автор топика
Ответ на: комментарий от baverman

А как ты реализовываешь удаление данных из базы?

KernelPanic
() автор топика
Ответ на: комментарий от Apple-ch

Это у джанги-то хорошая документация?

Мне показалась неплохой, когда пробовал рельсы и джанго. С рельсами было больше сложностей, для джанго как-то всё быстро находилось.

Reaper ★★
()
Ответ на: комментарий от KernelPanic

Улучшенный и обобщённый вариант для возможности выполнения запроса на удаление данных (по id) таблицы из шаблона:

def my_view ( request, id = "" ):
    query = Table.objects.get ( id = int(id) ).delete()
    return redirect ( "to_url", request, "out_template.html", query )
KernelPanic
() автор топика
Ответ на: комментарий от KernelPanic

Улучшенный и обобщённый вариант

Ну, тогда объясни все что тут делаешь.

gruy ★★★★★
()
Ответ на: комментарий от Apple-ch

Это у джанги-то хорошая документация? И давно?

По-моему вполне хорошая. Начиная где-то с 0.96, раньше не видел. Плохо только с class based views, но, вроде, пилят.

AlexKiriukha ★★★★
()
Ответ на: комментарий от KernelPanic

int(id) не обязательно. Ещё есть полезные штуки django.shortcuts.get_object_or_404 и django.shortcuts.render.

Ну и ответ хорошо бы осмысленный, .delete возвращает None. Дополнительная проблема - нет проверки чьё это сообщение, т.е. любой может удалить по id (хотя может так и хотелось).

AlexKiriukha ★★★★
()
Ответ на: комментарий от AlexKiriukha

int(id) не обязательно

я знаю, просто в доке увидел).

дополнительная проблема - нет проверки чьё это сообщение, т.е. любой может удалить по id (хотя может так и хотелось).

Проверка есть, не любой может удалить сообщение, а только staff.

KernelPanic
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.