from django.forms import ( Form, ModelForm, ModelMultipleChoiceField, ModelChoiceField, ChoiceField, CharField, HiddenInput, ) from django.forms import inlineformset_factory from generic.models import ( Examination, QuestionNote ) from django.contrib.admin.widgets import FilteredSelectMultiple from django.forms.widgets import RadioSelect, TextInput, Textarea from rapids.models import Rapid from anatomy.models import AnatomyQuestion from longs.models import Long from django.shortcuts import render, get_object_or_404, redirect from django.contrib.contenttypes.models import ContentType class ExaminationForm(ModelForm): class Meta: model = Examination fields = ["examination"] class QuestionNoteForm(ModelForm): class Meta: model = QuestionNote fields = ["content_type", "object_id", "author", "note_type", "note"] widgets = {'content_type': HiddenInput(), 'object_id': HiddenInput()} def __init__(self, *args, **kwargs): question_type = kwargs.pop("question_type") pk = kwargs.pop("pk") #if question_type == "rapid": # question = Rapid # content_type = ContentType.objects.get(model="rapid") #elif question_type == "anatomy": # question = AnatomyQuestion # content_type = ContentType.objects.get(model="anatomyquestion") #elif question_type == "long": # question = Long # content_type = ContentType.objects.get(model="long") #else: # raise PermissionError() #get_object_or_404(question, pk=pk) # We get the 'initial' keyword argument or initialize it # as a dict if it didn't exist. #if kwargs.get("instance"): ModelForm.__init__(self, *args, **kwargs) super(QuestionNoteForm, self).__init__(*args, **kwargs) #initial = kwargs.setdefault("initial", {}) ## The widget for a ModelMultipleChoiceField expects ## a list of primary key for the selected data. ##initial["content_type"] = question ##initial["content_id"] = pk #self.fields["content_type"].initial = content_type #self.fields["object_id"].initial = pk