2013-11-15 7 views
3

Я хочу создать скрытые поля, которые предварительно или после заполнения, используя общий CreateView, но, насколько я вижу, у меня есть только два варианта, которые не требуют указания формы ,Django Generic CreateView - как заполнять поля, но не отображать их

Это будет отображать поля уже заполнена:

class FootCreate(CreateView): 
    model = Footprint 
    fields = ["source","size","notes", "parent", "created_by"] 
    success_url = reverse_lazy('home') 

    def get_initial(self): 
     parent = Object.objects.get(id=self.kwargs['obj_id']) 
     return { 'parent': parent, 'created_by': self.request.user } 

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

fields = ["source","size","notes"] 

но теперь поля не заполняются на формы, чтобы он не подтверждался.

Я знаю, что могу справиться с этим наследованием формы или с помощью JavaScript, чтобы скрыть поля формы, но я задавался вопросом, есть ли возможность иметь эквивалент:

fields = ["source","size","notes", "parent", "created_by"] 
    hidden_fields = ["parent", "created_by"] 

в поле зрения?

ANSWER No - Но пользовательская модель формы занимает всего несколько строк. Дайте полный список полей в представлении .:

class FootprintForm(ModelForm): 

    class Meta: 
     model = Footprint 
     widgets = {'created_by': forms.HiddenInput, "object": forms.HiddenInput} 

ответ

2

Как я теперь нет никакого способа, чтобы сделать то, что вы хотите в ОЦК, и я думаю, что нет никаких причин, чтобы сделать это в представлении. Логика формы должна быть инкапсулирована в форму, и вы можете сделать это легко с ModelForm и несколькими строками кода

+0

Полезно знать. Добавлено решение с использованием формы выше. Благодарю. – PhoebeB

Смежные вопросы