0

I have a model form, to which I have added one extra field - is_flagged.

#forms.py
class UserForm(forms.ModelForm):

    is_flagged = forms.BooleanField(required=False)

    class Meta:
        model = CustomUser
        fields = ['username','is_flagged']

Now, because my user model does not have an attribute of 'is_flagged', I create this value for each user via a modified queryset.

#managers.py
class FlaggedUserManager(models.Manager):

    def get_queryset(self):
        qs = super(FlaggedUserManager, self).get_queryset().all()
        for user in qs:
            user.is_flagged = True
        return qs

#user model
flagged_users = FlaggedUserManager()

Next, I create a modelformset using my custom queryset to populate the form.

base_formset = modelformset_factory(CustomUser, form=UserForm, extra=0)
formset = base_formset(queryset=CustomUser.flagged_users.all())
return {'formset': formset}

Everything works as expected, the field 'is_flagged' is rendered for all the users but the data isn't populating the form as the checkboxes rendered are all set to 0.

Can anyone suggest what I'm doing wrong, and how I might be able to populate this field from a modified queryset?

Thanks in advance,

rix
  • 10,104
  • 14
  • 65
  • 92
  • Just wondering but what would happen if you modified your template to reflect something like this: `{% if user.is_flagged %} {% else %} {% endif %}` – Hevlastka Sep 19 '14 at 11:03
  • I'm pretty sure that would work although it looks like i might not have time to try. I solved this whole problem different by passing arguments to the formset. Thanks for the suggestion! – rix Sep 26 '14 at 10:20

1 Answers1

0

OK, in the end I solved this by approaching it in another way and passing arguments into the formset:

Django Passing Custom Form Parameters to Formset

Community
  • 1
  • 1
rix
  • 10,104
  • 14
  • 65
  • 92