Преобразование старых основанных на функциях общих представлений CRUD в новый стиль на основе классов общих представлений CRUD - PullRequest
2 голосов
/ 18 сентября 2011

Я использовал общие представления CRUD в Django для нескольких вещей в моем проекте. Теперь я хотел бы начать переход к новым типовым представлениям CRUD на основе классов в DJango 1.3. Я не нашел документы очень полезными и мог бы немного помочь с преобразованием некоторых моих функциональных представлений. Вот фрагмент моих взглядов:

def create_domains(request, *args, **kwargs):
    return create_object(request=request, form_class=DomainForm,
        template_name='customer/create_domains.html',
        post_save_redirect=reverse('manage_domains')
    )

def delete_domains(request, object_id, *args, **kwargs):
    return delete_object(request=request,
        object_id=object_id, model=Domain,
        template_name='customer/delete_domains.html',
        post_delete_redirect=reverse('manage_domains')
    )

Думаю, я буду использовать CreateView для первого и DeleteView для следующего. Это то, что я придумала до сих пор:

class DomainCreateView(CreateView):
    form_class = DomainForm
    template_name = 'create_domains.html'
    success_url = 'manage_domains'

class DomainDeleteeView(CreateView):
    model = Domain
    template_name = 'delete_domains.html'
    success_url = 'manage_domains'
    pk_url_kwarg = object_id

Может ли кто-нибудь из вас показать мне, чтобы я переписал то же самое представление на основе классов? Небольшой старт был бы очень полезен, и я уверен, что смогу взять его оттуда.

Спасибо.

1 Ответ

3 голосов
/ 19 сентября 2011

После копания в источниках Django я узнал, как это сделать.

class DomainCreateView(CreateView):
    """
    Creates a Domain
    """
    form_class = DomainForm
    template_name = 'customer/create_domains.html'
    success_url = reverse_lazy('manage_domains')

    @method_decorator(login_required)
    @method_decorator(only_managers_allowed)
    def dispatch(self, *args, **kwargs):
        """
        The Dispatcher
        """
        return super(DomainCreateView, self).dispatch(*args, **kwargs)

    def form_valid(self, form):
        """
        Validate and save the form
        """
        company = self.request.user.get_profile().company
        self.object = form.save(company)
        return super(ModelFormMixin, self).form_valid(form)


class DomainDeleteView(DeleteView):
    """
    Deletes a Domain
    """
    model = Domain
    template_name = 'customer/delete_domains.html'
    success_url = reverse_lazy('manage_domains')

    @method_decorator(login_required)
    @method_decorator(only_managers_allowed)
    def dispatch(self, *args, **kwargs):
        """
        The Dispatcher
        """
        return super(DomainDeleteView, self).dispatch(*args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...