#python #django
#python #django
Вопрос:
Я использую django DeleteView
класс для удаления разных записей. Единственное, что отличается от вызова к вызову, — это атрибут модели. В любом случае есть только один вызов для удаления для разных моделей? Я предлагаю что-то в этом роде, но я не знаю, как это реализовать. Есть предложения?
views.py
:
class Delete(DeleteView):
template_name='kammem/delete.html'
success_url=reverse_lazy('forl')
model=super().get_context_data()
def get_context_data(self,**kwargs):
mod=self.kwargs['model']
if mod=='forening':
model=forening
elif mod=='person'
return model
urls.py
:
path('delete/<int:pk>/<str:model>',Delete.as_view(),name='delete'),
Комментарии:
1. Вы могли бы написать представление для удаления моделей на основе имени модели в пути. Интересно, сколько у вас моделей, чтобы это было предпочтительнее, чем писать DeleteView для каждого. По мере усложнения вашего приложения вы можете начать сожалеть о том, что один класс обрабатывает так много путей кода.
2. Если вы еще этого не видели, это может быть полезно при разработке того, что наследовать: ccbv.co.uk/projects/Django/3.0/django.views.generic.edit /…
3. дело в том, что вместо того, чтобы писать множество представлений удаления, которые отличаются только именем модели, я хочу передать имя модели в URL, а затем передать правильное в представлении удаления. т.е. Один вид удаления вместо многих из них.
4. Там, где я нахожусь, уже поздно, поэтому я не собираюсь писать это для вас. Один совет, который я могу вам дать, заключается в том, что вы можете использовать эту функцию вместо блока if-else: docs.djangoproject.com/en/3.0/ref/applications /…
5. Хотя вам нужно быть осторожным, чтобы не раскрывать модели, которые вы не хотели бы, чтобы пользователь удалял.