в Django, как реализовать функцию CreateView с представлениями на основе функций? - PullRequest
0 голосов
/ 18 марта 2019

здесь представления на основе класса код:

# views.py
class ObjectCreate(CreateView):
    model = ObjectModel
    fields = "__all__"

его просто создать и сохранить, используя этот класс.

Интересно, как?

что, если я хочу использовать представления на основе функций для достижения этого?

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Если вы хотите узнать, как работает CreateView, посмотрите его исходный код. Или для более простого обзора структуры, посмотрите на этот сайт , в котором перечислены все CBV Django.

Вы обнаружите, что CreateView наследует от 9 других классов, имеет около 20 атрибутов (из которых model и fields) и 24 метода, которые вы можете переопределить для настройки его поведения.

1 голос
/ 18 марта 2019

Используя представление функций, вам нужно реализовать все, включая создание формы для вашей модели :

def create_object(request):
    if request.method == 'GET':
        form = ObjectForm()

    if request.method == 'POST':
        form = ObjectForm(request.POST)
        if form.is_valid():
            instance = form.save()  # instance created
            # now redirect user or render a success template
            return redirect(...)

    # if request method is GET or form is invalid return the form
    return render(request, 'path/template_name.html', {'form': form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...