diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2006-12-27 05:15:22 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2006-12-27 05:15:22 +0000 |
| commit | d853278253b5efa60a691ae9b83fb6352d2a91f0 (patch) | |
| tree | 625096f63ee85af332ed92238aab443f0ab2e857 | |
| parent | 99723ac65a5471a619fc1a668391ee818cc1437d (diff) | |
newforms: Implemented formfield() for database ManyToManyField class and added unit tests
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4246 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/db/models/fields/related.py | 5 | ||||
| -rw-r--r-- | tests/modeltests/model_forms/models.py | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 797ef05be1..ce33968974 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -2,10 +2,12 @@ from django.db import backend, transaction from django.db.models import signals, get_model from django.db.models.fields import AutoField, Field, IntegerField, get_ul_class from django.db.models.related import RelatedObject +from django.utils.text import capfirst from django.utils.translation import gettext_lazy, string_concat, ngettext from django.utils.functional import curry from django.core import validators from django import oldforms +from django import newforms as forms from django.dispatch import dispatcher # For Python 2.3 @@ -713,6 +715,9 @@ class ManyToManyField(RelatedField, Field): def set_attributes_from_rel(self): pass + def formfield(self): + return forms.MultipleChoiceField(choices=self.get_choices_default(), required=not self.blank, label=capfirst(self.verbose_name)) + class ManyToOneRel(object): def __init__(self, to, field_name, num_in_admin=3, min_num_in_admin=None, max_num_in_admin=None, num_extra_on_change=1, edit_inline=False, diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index 5ffd6aac9f..da10e215a6 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -101,6 +101,18 @@ Traceback (most recent call last): ... ValueError: The Category could not be created because the data didn't validate. +ManyToManyFields are represented by a MultipleChoiceField. +>>> ArticleForm = form_for_model(Article) +>>> f = ArticleForm(auto_id=False) +>>> print f +<tr><th>Headline:</th><td><input type="text" name="headline" maxlength="50" /></td></tr> +<tr><th>Pub date:</th><td><input type="text" name="pub_date" /></td></tr> +<tr><th>Categories:</th><td><select multiple="multiple" name="categories"> +<option value="1">Entertainment</option> +<option value="2">It's a test</option> +<option value="3">Third test</option> +</select></td></tr> + You can pass a custom Form class to form_for_model. Make sure it's a subclass of BaseForm, not Form. >>> class CustomForm(BaseForm): |
