2012-02-04 14 views
56

Devo selezionare diversi oggetti da eliminare dal mio database in django usando una pagina web. Non esiste una categoria tra cui selezionare, quindi non posso cancellare da tutti loro in quel modo. Devo implementare il mio modulo di eliminazione ed elaborarlo in django o django ha un modo per farlo già? Come implementato nell'interfaccia di amministrazione.Elimina più oggetti in django

risposta

101

È possibile eliminare qualsiasi set di query che si desidera. Ad esempio, per eliminare tutti i post del blog con un certo modello Post

Post.objects.all().delete() 

e ad eliminare qualsiasi post con una futura data di pubblicazione

Post.objects.filter(pub_date__gt=datetime.now()).delete() 

Tu, però, bisogno di trovare un modo per restringere giù il tuo QuerySet. Se vuoi solo una vista per cancellare un oggetto particolare, guarda nello delete generic view.

EDIT:

Ci scusiamo per il malinteso. Penso che la risposta sia da qualche parte. Per implementare il tuo, combinare ModelForm se generic views. Altrimenti, esamina le app di terze parti che offrono funzionalità simili. In uno related question, la raccomandazione era django-filter.

+1

No hai frainteso la domanda. Capisco che posso cancellare tutto. Ma ho bisogno di selezionare gli oggetti da eliminare con un modulo su una pagina web. E quindi elaborare i dati restituiti dal modulo nel mio views.py. Quindi esegui il loop su cosa è stato restituito dal modulo durante l'eliminazione dei dati. Ma volevo sapere qual è la pratica migliore per implementarlo in django. – Dean

+0

Ah, mio ​​errore! Vorrei utilizzare un'app di terze parti o viste generiche con 'ModelForm's. –

+5

@Dean, dai un'occhiata alla vista di cancellazione. Oppure puoi semplicemente scrivere la tua vista ... In definitiva, probabilmente stai ricevendo un elenco di PK e stai chiamando delete sul tuo modello ... 'MyModel.objects.filter (id__in = request.POST.getlist ('delete_list')) .delete() 'e sono sicuro che vuoi qualcosa per assicurarti che una persona a caso non possa cancellare tutti gli oggetti nel tuo DB indovinando i PK. –

Problemi correlati