1
0
mirror of https://github.com/django/django.git synced 2025-01-12 19:37:06 +00:00
django/tests/regressiontests/model_forms_regress/models.py
Malcolm Tredinnick 3bd384aa62 Fixed #10645 -- Added some robustness around some admin and modelform params.
Fieldset dictionary names, search fields and unique_together attribute
names all have to be convertible to strings (that has always been true).
If somebody passes in a unicode object, Python barfs because Django uses
those values as keyword argument names and function calls require
parameter names to be str objects. We now convert thing to strs
automatically.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10510 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-04-11 07:41:59 +00:00

48 lines
1.3 KiB
Python

import os
from django.db import models
from django import forms
class Triple(models.Model):
left = models.IntegerField()
middle = models.IntegerField()
right = models.IntegerField()
def __unicode__(self):
return u"%d, %d, %d" % (self.left, self.middle, self.right)
class Meta:
unique_together = (('left', 'middle'), (u'middle', u'right'))
class FilePathModel(models.Model):
path = models.FilePathField(path=os.path.dirname(__file__), match=".*\.py$", blank=True)
__test__ = {'API_TESTS': """
When the same field is involved in multiple unique_together constraints, we
need to make sure we don't remove the data for it before doing all the
validation checking (not just failing after the first one).
>>> _ = Triple.objects.create(left=1, middle=2, right=3)
>>> class TripleForm(forms.ModelForm):
... class Meta:
... model = Triple
>>> form = TripleForm({'left': '1', 'middle': '2', 'right': '3'})
>>> form.is_valid()
False
>>> form = TripleForm({'left': '1', 'middle': '3', 'right': '1'})
>>> form.is_valid()
True
# Regression test for #8842: FilePathField(blank=True)
>>> class FPForm(forms.ModelForm):
... class Meta:
... model = FilePathModel
>>> form = FPForm()
>>> names = [c[1] for c in form['path'].field.choices]
>>> names.sort()
>>> names
['---------', '__init__.py', 'models.py']
"""}