Django ModelForm скрыть поле из формы и использовать значение из URL - PullRequest
0 голосов
/ 01 сентября 2018

Заранее спасибо за прочтение. Я не могу обернуть голову вокруг этого, и это уже довольно расстраивает.

У нас есть следующая регистрационная форма:

class RegistrationForm(forms.ModelForm):
    class Meta:
        model = Register
        fields = ('name', 'company_name')

    def clean(self):
        if is not self.cleaned_data.get('card').is_available():
            raise forms.ValidationError(_('Error'))

Модель Register включает card, связанную с моделью Card. Это включает в себя is_available(), который работает функционально.

Наш поток:

  • Конечный пользователь выбирает карточку, в которой перечислены все регистрации для нее.
  • Они нажимают кнопку «Добавить регистрацию», которая приводит их к карточкам / {PK} /add.

Кнопка Add registration - это generic.View. В post(self, request, pk) у меня есть следующий код:

form = RegistrationForm(request.POST)

Но как мне передать ему содержимое Card.objects.get(pk=pk)?

Я пытался:

data = request.POST.copy()
data['card'] = pk
form = RegistrationForm(data)

Но я думаю, что card не входит в fields, оно где-то теряется, что имеет смысл с точки зрения sanitize-all-input, но я бы очень хотел динамически добавить card в это дело.

Есть идеи?

1 Ответ

0 голосов
/ 01 сентября 2018

Итак, просто используйте CreateView и изучите, как он работает, используя связанный сайт.

Нет необходимости использовать generic.View, поскольку он является базовым. Вам нужно реализовать всю эту логику, используя generic.View, чтобы лучше ознакомиться с тем, как все работает, или если вам нужна особая обработка форм.

Короткая версия будет:

from django.views import generic
from myapp.forms import RegistrationForm

class CardCreateView(generic.CreateView):
    form_class = RegistrationForm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...