I assume that you are leaving some things out of your project model. Your view also calls project.members.all() and project.summary without getting the project in an else statement.
Assuming you have a summary field in the project model, if you want to use a form, not a model, then:
forms.py
class ProjectSettings(forms.Form): summary = forms.CharField(max_length=200) def __init__(self, qs=None, *args, **kwargs): super(ProjectSettings, self).__init__(*args, **kwargs) if qs: self.fields['members'] = forms.ModelMultipleChoiceField(queryset=qs, widget=forms.CheckboxSelectMultiple())
and in your views.py you will go in qs to the form:
def update_project(request, project_slug): project = None if project_slug: project = get_object_or_404(Project, name=project_slug)
Using ModelForm makes sense here if you really have a summary field in your Project model.
forms.py:
class ProjectSettings(forms.ModelForm): def __init__(self, qs=None, *args, **kwargs): super(ProjectSettings, self).__init__(*args, **kwargs) self.fields['members'].widget = forms.CheckboxSelectMultiple() class Meta: model = Project fields = ('summary', 'members')
views.py:
def update_project(request, project_slug): project = None if project_slug: project = get_object_or_404(Project, name=project_slug)
source share