#26970: Disabled ModelMultipleChoiceField does not validate anymore
-------------------------------+--------------------------------------
     Reporter:  karyon         |                    Owner:  nobody
         Type:  Uncategorized  |                   Status:  new
    Component:  Uncategorized  |                  Version:  1.10
     Severity:  Normal         |               Resolution:
     Keywords:                 |             Triage Stage:  Unreviewed
    Has patch:  0              |      Needs documentation:  0
  Needs tests:  0              |  Patch needs improvement:  0
Easy pickings:  0              |                    UI/UX:  0
-------------------------------+--------------------------------------

Comment (by karyon):

 here are two tests:


 {{{
 def test_disabled_model_multiple_choice_field(self):
     class WriterForm(forms.Form):
         persons =
 forms.ModelMultipleChoiceField(queryset=Writer.objects.all())

     person1 = Writer.objects.create(name="Person 1")
     form = WriterForm(data={'persons': [person1.pk]})
     self.assertTrue(form.is_valid())
     form = WriterForm(data={'persons': [person1.pk]})
     form.fields['persons'].disabled = True
     self.assertTrue(form.is_valid())

 def test_disabled_model_multiple_choice_field2(self):
     class ArticleCategoriesForm(forms.ModelForm):
         categories =
 forms.ModelMultipleChoiceField(Category.objects.all(), required=False)

         class Meta:
             model = Article
             fields = ['categories']

     category1 = Category.objects.create(name="uiae")
     article1 = Article.objects.create(
                 pub_date=datetime.date(1988, 1, 4),
                 writer=Writer.objects.create(name='Test writer'),
                 # categories= [category1.pk], # throws a warning
             )
     article1.categories.set([category1.pk]) # without this, the test
 passes
     # article1.categories = [category1.pk] # throws a warning

     # instance must be set, otherwise test passes
     form = ArticleCategoriesForm(data={'categories': [category1.pk]},
 instance=article1)
     self.assertTrue(form.is_valid())
     form = ArticleCategoriesForm(data={'categories': [category1.pk]},
 instance=article1)
     form.fields['categories'].disabled = True
     self.assertTrue(form.is_valid())
 }}}

 both fail at the second assert, the first one with "this field is
 required" (setting it to required=False or disabled=False makes the test
 pass), the second one with "please enter a list of values", like the
 original report.

 i'm not sure what the protocol is, should i put the code somewhere else?

 unrelated: note the warnings when assigning article.categories. the
 warning was "Direct assignment to the reverse side of a related set is
 deprecated due to the implicit save() that happens. Use article_set.set()
 instead." although i was not assigning to the reverse side. should i file
 a separate bug?

--
Ticket URL: <https://code.djangoproject.com/ticket/26970#comment:7>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.8fca599616229026902d5623fc7d9daf%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to