예제 #1
0
파일: models.py 프로젝트: iMerica/dj-models
class VerboseNameField(models.Model):
    id = models.AutoField("verbose pk", primary_key=True)
    field1 = models.BigIntegerField("verbose field1")
    field2 = models.BooleanField("verbose field2", default=False)
    field3 = models.CharField("verbose field3", max_length=10)
    field4 = models.DateField("verbose field4")
    field5 = models.DateTimeField("verbose field5")
    field6 = models.DecimalField("verbose field6",
                                 max_digits=6,
                                 decimal_places=1)
    field7 = models.EmailField("verbose field7")
    field8 = models.FileField("verbose field8", upload_to="unused")
    field9 = models.FilePathField("verbose field9")
    field10 = models.FloatField("verbose field10")
    # Don't want to depend on Pillow in this test
    # field_image = models.ImageField("verbose field")
    field11 = models.IntegerField("verbose field11")
    field12 = models.GenericIPAddressField("verbose field12", protocol="ipv4")
    field13 = models.NullBooleanField("verbose field13")
    field14 = models.PositiveIntegerField("verbose field14")
    field15 = models.PositiveSmallIntegerField("verbose field15")
    field16 = models.SlugField("verbose field16")
    field17 = models.SmallIntegerField("verbose field17")
    field18 = models.TextField("verbose field18")
    field19 = models.TimeField("verbose field19")
    field20 = models.URLField("verbose field20")
    field21 = models.UUIDField("verbose field21")
    field22 = models.DurationField("verbose field22")
예제 #2
0
파일: models.py 프로젝트: iMerica/dj-models
class NullableFields(models.Model):
    # Fields in db.backends.oracle.BulkInsertMapper
    big_int_filed = models.BigIntegerField(null=True, default=1)
    binary_field = models.BinaryField(null=True, default=b'data')
    date_field = models.DateField(null=True, default=timezone.now)
    datetime_field = models.DateTimeField(null=True, default=timezone.now)
    decimal_field = models.DecimalField(null=True, max_digits=2, decimal_places=1, default=Decimal('1.1'))
    duration_field = models.DurationField(null=True, default=datetime.timedelta(1))
    float_field = models.FloatField(null=True, default=3.2)
    integer_field = models.IntegerField(null=True, default=2)
    null_boolean_field = models.BooleanField(null=True, default=False)
    null_boolean_field_old = models.NullBooleanField(null=True, default=False)
    positive_integer_field = models.PositiveIntegerField(null=True, default=3)
    positive_small_integer_field = models.PositiveSmallIntegerField(null=True, default=4)
    small_integer_field = models.SmallIntegerField(null=True, default=5)
    time_field = models.TimeField(null=True, default=timezone.now)
    # Fields not required in BulkInsertMapper
    char_field = models.CharField(null=True, max_length=4, default='char')
    email_field = models.EmailField(null=True, default='*****@*****.**')
    file_field = models.FileField(null=True, default='file.txt')
    file_path_field = models.FilePathField(path='/tmp', null=True, default='file.txt')
    generic_ip_address_field = models.GenericIPAddressField(null=True, default='127.0.0.1')
    if Image:
        image_field = models.ImageField(null=True, default='image.jpg')
    slug_field = models.SlugField(null=True, default='slug')
    text_field = models.TextField(null=True, default='text')
    url_field = models.URLField(null=True, default='/')
    uuid_field = models.UUIDField(null=True, default=uuid.uuid4)
예제 #3
0
 def test_max_digits_validation(self):
     field = models.DecimalField(max_digits=2)
     expected_message = validators.DecimalValidator.messages[
         'max_digits'] % {
             'max': 2
         }
     with self.assertRaisesMessage(ValidationError, expected_message):
         field.clean(100, None)
예제 #4
0
 def test_max_whole_digits_validation(self):
     field = models.DecimalField(max_digits=3, decimal_places=1)
     expected_message = validators.DecimalValidator.messages[
         'max_whole_digits'] % {
             'max': 2
         }
     with self.assertRaisesMessage(ValidationError, expected_message):
         field.clean(Decimal('999'), None)
예제 #5
0
class Company(models.Model):
    name = models.CharField(max_length=50)
    date_added = models.DateTimeField(default=datetime(1799, 1, 31, 23, 59, 59, 0))
    cents_paid = models.DecimalField(max_digits=4, decimal_places=2)
    products_delivered = models.IntegerField()

    class Meta:
        verbose_name = _('Company')
예제 #6
0
class OtherTypesArrayModel(PostgreSQLModel):
    ips = ArrayField(models.GenericIPAddressField())
    uuids = ArrayField(models.UUIDField())
    decimals = ArrayField(models.DecimalField(max_digits=5, decimal_places=2))
    tags = ArrayField(TagField(), blank=True, null=True)
    json = ArrayField(JSONField(default=dict), default=list)
    int_ranges = ArrayField(IntegerRangeField(), blank=True, null=True)
    bigint_ranges = ArrayField(BigIntegerRangeField(), blank=True, null=True)
예제 #7
0
class BookWithCustomPK(models.Model):
    my_pk = models.DecimalField(max_digits=5,
                                decimal_places=0,
                                primary_key=True)
    author = models.ForeignKey(Author, models.CASCADE)
    title = models.CharField(max_length=100)

    def __str__(self):
        return '%s: %s' % (self.my_pk, self.title)
예제 #8
0
파일: models.py 프로젝트: iMerica/dj-models
class Price(models.Model):
    price = models.DecimalField(max_digits=10, decimal_places=2)
    quantity = models.PositiveIntegerField()

    def __str__(self):
        return "%s for %s" % (self.quantity, self.price)

    class Meta:
        unique_together = (('price', 'quantity'), )
예제 #9
0
파일: tests.py 프로젝트: iMerica/dj-models
 def test_decimal_field_0_decimal_places(self):
     """
     A DecimalField with decimal_places=0 should work (#22272).
     """
     field = models.DecimalField(max_digits=5, decimal_places=0)
     name, path, args, kwargs = field.deconstruct()
     self.assertEqual(path, "djmodels.db.models.DecimalField")
     self.assertEqual(args, [])
     self.assertEqual(kwargs, {"max_digits": 5, "decimal_places": 0})
예제 #10
0
파일: base.py 프로젝트: iMerica/dj-models
class Movie(models.Model):
    actor = models.ForeignKey(Actor, models.CASCADE)
    title = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=6,
                                decimal_places=2,
                                default=Decimal('0.00'))

    class Meta:
        ordering = ('title', )

    def __str__(self):
        return self.title
예제 #11
0
class Employee(models.Model):
    # The order of these fields matter, do not change. Certain backends
    # rely on field ordering to perform database conversions, and this
    # model helps to test that.
    first_name = models.CharField(max_length=20)
    manager = models.BooleanField(default=False)
    last_name = models.CharField(max_length=20)
    store = models.ForeignKey(Store, models.CASCADE)
    age = models.IntegerField()
    salary = models.DecimalField(max_digits=8, decimal_places=2)

    def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)
예제 #12
0
 def test_to_python(self):
     f = models.DecimalField(max_digits=4, decimal_places=2)
     self.assertEqual(f.to_python(3), Decimal('3'))
     self.assertEqual(f.to_python('3.14'), Decimal('3.14'))
     # to_python() converts floats and honors max_digits.
     self.assertEqual(f.to_python(3.1415926535897), Decimal('3.142'))
     self.assertEqual(f.to_python(2.4), Decimal('2.400'))
     # Uses default rounding of ROUND_HALF_EVEN.
     self.assertEqual(f.to_python(2.0625), Decimal('2.062'))
     self.assertEqual(f.to_python(2.1875), Decimal('2.188'))
     msg = "'abc' value must be a decimal number."
     with self.assertRaisesMessage(ValidationError, msg):
         f.to_python('abc')
예제 #13
0
class Book(models.Model):
    isbn = models.CharField(max_length=9)
    name = models.CharField(max_length=255)
    pages = models.IntegerField()
    rating = models.FloatField()
    price = models.DecimalField(decimal_places=2, max_digits=6)
    authors = models.ManyToManyField(Author)
    contact = models.ForeignKey(Author,
                                models.CASCADE,
                                related_name='book_contact_set')
    publisher = models.ForeignKey(Publisher, models.CASCADE)
    pubdate = models.DateField()

    def __str__(self):
        return self.name
예제 #14
0
파일: models.py 프로젝트: iMerica/dj-models
class AllFieldsModel(models.Model):
    big_integer = models.BigIntegerField()
    binary = models.BinaryField()
    boolean = models.BooleanField(default=False)
    char = models.CharField(max_length=10)
    date = models.DateField()
    datetime = models.DateTimeField()
    decimal = models.DecimalField(decimal_places=2, max_digits=2)
    duration = models.DurationField()
    email = models.EmailField()
    file_path = models.FilePathField()
    floatf = models.FloatField()
    integer = models.IntegerField()
    generic_ip = models.GenericIPAddressField()
    null_boolean = models.NullBooleanField()
    positive_integer = models.PositiveIntegerField()
    positive_small_integer = models.PositiveSmallIntegerField()
    slug = models.SlugField()
    small_integer = models.SmallIntegerField()
    text = models.TextField()
    time = models.TimeField()
    url = models.URLField()
    uuid = models.UUIDField()

    fo = ForeignObject('self',
                       on_delete=models.CASCADE,
                       from_fields=['abstract_non_concrete_id'],
                       to_fields=['id'],
                       related_name='reverse')
    fk = ForeignKey('self', models.CASCADE, related_name='reverse2')
    m2m = ManyToManyField('self')
    oto = OneToOneField('self', models.CASCADE)

    object_id = models.PositiveIntegerField()
    content_type = models.ForeignKey(ContentType, models.CASCADE)
    gfk = GenericForeignKey()
    gr = GenericRelation(DataModel)
예제 #15
0
class CaseTestModel(models.Model):
    integer = models.IntegerField()
    integer2 = models.IntegerField(null=True)
    string = models.CharField(max_length=100, default='')

    big_integer = models.BigIntegerField(null=True)
    binary = models.BinaryField(default=b'')
    boolean = models.BooleanField(default=False)
    date = models.DateField(null=True, db_column='date_field')
    date_time = models.DateTimeField(null=True)
    decimal = models.DecimalField(max_digits=2,
                                  decimal_places=1,
                                  null=True,
                                  db_column='decimal_field')
    duration = models.DurationField(null=True)
    email = models.EmailField(default='')
    file = models.FileField(null=True, db_column='file_field')
    file_path = models.FilePathField(null=True)
    float = models.FloatField(null=True, db_column='float_field')
    if Image:
        image = models.ImageField(null=True)
    generic_ip_address = models.GenericIPAddressField(null=True)
    null_boolean = models.BooleanField(null=True)
    null_boolean_old = models.NullBooleanField()
    positive_integer = models.PositiveIntegerField(null=True)
    positive_small_integer = models.PositiveSmallIntegerField(null=True)
    slug = models.SlugField(default='')
    small_integer = models.SmallIntegerField(null=True)
    text = models.TextField(default='')
    time = models.TimeField(null=True, db_column='time_field')
    url = models.URLField(default='')
    uuid = models.UUIDField(null=True)
    fk = models.ForeignKey('self', models.CASCADE, null=True)

    def __str__(self):
        return "%i, %s" % (self.integer, self.string)
예제 #16
0
파일: models.py 프로젝트: iMerica/dj-models
class ColumnTypes(models.Model):
    id = models.AutoField(primary_key=True)
    big_int_field = models.BigIntegerField()
    bool_field = models.BooleanField(default=False)
    null_bool_field = models.BooleanField(null=True)
    char_field = models.CharField(max_length=10)
    null_char_field = models.CharField(max_length=10, blank=True, null=True)
    date_field = models.DateField()
    date_time_field = models.DateTimeField()
    decimal_field = models.DecimalField(max_digits=6, decimal_places=1)
    email_field = models.EmailField()
    file_field = models.FileField(upload_to="unused")
    file_path_field = models.FilePathField()
    float_field = models.FloatField()
    int_field = models.IntegerField()
    gen_ip_address_field = models.GenericIPAddressField(protocol="ipv4")
    pos_int_field = models.PositiveIntegerField()
    pos_small_int_field = models.PositiveSmallIntegerField()
    slug_field = models.SlugField()
    small_int_field = models.SmallIntegerField()
    text_field = models.TextField()
    time_field = models.TimeField()
    url_field = models.URLField()
    uuid_field = models.UUIDField()
예제 #17
0
파일: models.py 프로젝트: iMerica/dj-models
class BigD(models.Model):
    d = models.DecimalField(max_digits=32, decimal_places=30)
예제 #18
0
 def test_get_prep_value(self):
     f = models.DecimalField(max_digits=5, decimal_places=1)
     self.assertIsNone(f.get_prep_value(None))
     self.assertEqual(f.get_prep_value('2.4'), Decimal('2.4'))
예제 #19
0
 def test_default(self):
     f = models.DecimalField(default=Decimal('0.00'))
     self.assertEqual(f.get_default(), Decimal('0.00'))
예제 #20
0
class DecimalPKData(models.Model):
    data = models.DecimalField(primary_key=True,
                               decimal_places=3,
                               max_digits=5)
예제 #21
0
파일: models.py 프로젝트: iMerica/dj-models
class Stock(models.Model):
    product = models.ForeignKey(Product, models.CASCADE)
    qty_available = models.DecimalField(max_digits=6, decimal_places=2)
예제 #22
0
파일: models.py 프로젝트: iMerica/dj-models
class Product(models.Model):
    name = models.CharField(max_length=80)
    qty_target = models.DecimalField(max_digits=6, decimal_places=2)
예제 #23
0
파일: models.py 프로젝트: iMerica/dj-models
class Coffee(models.Model):
    brand = models.CharField(max_length=255, db_column="name")
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
예제 #24
0
class DecimalData(models.Model):
    data = models.DecimalField(null=True, decimal_places=3, max_digits=5)
예제 #25
0
파일: models.py 프로젝트: iMerica/dj-models
class Foo(models.Model):
    a = models.CharField(max_length=10)
    d = models.DecimalField(max_digits=5, decimal_places=3)
예제 #26
0
class Migration(migrations.Migration):

    dependencies = [
        ('postgres_tests', '0001_setup_extensions'),
    ]

    operations = [
        migrations.CreateModel(
            name='CharArrayModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field', ArrayField(models.CharField(max_length=10),
                                     size=None)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='DateTimeArrayModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('datetimes', ArrayField(models.DateTimeField(), size=None)),
                ('dates', ArrayField(models.DateField(), size=None)),
                ('times', ArrayField(models.TimeField(), size=None)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='HStoreModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field', HStoreField(blank=True, null=True)),
                ('array_field', ArrayField(HStoreField(), null=True)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='OtherTypesArrayModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('ips', ArrayField(models.GenericIPAddressField(), size=None)),
                ('uuids', ArrayField(models.UUIDField(), size=None)),
                ('decimals',
                 ArrayField(models.DecimalField(max_digits=5,
                                                decimal_places=2),
                            size=None)),
                ('tags',
                 ArrayField(TagField(), blank=True, null=True, size=None)),
                ('json', ArrayField(JSONField(default={}), default=[])),
                ('int_ranges',
                 ArrayField(IntegerRangeField(), null=True, blank=True)),
                ('bigint_ranges',
                 ArrayField(BigIntegerRangeField(), null=True, blank=True)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='IntegerArrayModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field', ArrayField(models.IntegerField(), size=None)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='NestedIntegerArrayModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field',
                 ArrayField(ArrayField(models.IntegerField(), size=None),
                            size=None)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='NullableIntegerArrayModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field',
                 ArrayField(models.IntegerField(),
                            size=None,
                            null=True,
                            blank=True)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='CharFieldModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field', models.CharField(max_length=16)),
            ],
            options=None,
            bases=None,
        ),
        migrations.CreateModel(
            name='TextFieldModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field', models.TextField()),
            ],
            options=None,
            bases=None,
        ),
        migrations.CreateModel(
            name='Scene',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('scene', models.CharField(max_length=255)),
                ('setting', models.CharField(max_length=255)),
            ],
            options=None,
            bases=None,
        ),
        migrations.CreateModel(
            name='Character',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('name', models.CharField(max_length=255)),
            ],
            options=None,
            bases=None,
        ),
        migrations.CreateModel(
            name='CITestModel',
            fields=[
                ('name', CICharField(primary_key=True, max_length=255)),
                ('email', CIEmailField()),
                ('description', CITextField()),
                ('array_field', ArrayField(CITextField(), null=True)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=None,
        ),
        migrations.CreateModel(
            name='Line',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('scene',
                 models.ForeignKey('postgres_tests.Scene',
                                   on_delete=models.SET_NULL)),
                ('character',
                 models.ForeignKey('postgres_tests.Character',
                                   on_delete=models.SET_NULL)),
                ('dialogue', models.TextField(blank=True, null=True)),
                ('dialogue_search_vector',
                 SearchVectorField(blank=True, null=True)),
                ('dialogue_config',
                 models.CharField(max_length=100, blank=True, null=True)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=None,
        ),
        migrations.CreateModel(name='AggregateTestModel',
                               fields=[
                                   ('id',
                                    models.AutoField(verbose_name='ID',
                                                     serialize=False,
                                                     auto_created=True,
                                                     primary_key=True)),
                                   ('boolean_field',
                                    models.BooleanField(null=True)),
                                   ('char_field',
                                    models.CharField(max_length=30,
                                                     blank=True)),
                                   ('integer_field',
                                    models.IntegerField(null=True)),
                               ]),
        migrations.CreateModel(name='StatTestModel',
                               fields=[
                                   ('id',
                                    models.AutoField(verbose_name='ID',
                                                     serialize=False,
                                                     auto_created=True,
                                                     primary_key=True)),
                                   ('int1', models.IntegerField()),
                                   ('int2', models.IntegerField()),
                                   ('related_field',
                                    models.ForeignKey(
                                        'postgres_tests.AggregateTestModel',
                                        models.SET_NULL,
                                        null=True,
                                    )),
                               ]),
        migrations.CreateModel(name='NowTestModel',
                               fields=[
                                   ('id',
                                    models.AutoField(verbose_name='ID',
                                                     serialize=False,
                                                     auto_created=True,
                                                     primary_key=True)),
                                   ('when',
                                    models.DateTimeField(null=True,
                                                         default=None)),
                               ]),
        migrations.CreateModel(name='UUIDTestModel',
                               fields=[
                                   ('id',
                                    models.AutoField(verbose_name='ID',
                                                     serialize=False,
                                                     auto_created=True,
                                                     primary_key=True)),
                                   ('uuid',
                                    models.UUIDField(default=None, null=True)),
                               ]),
        migrations.CreateModel(
            name='RangesModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('ints', IntegerRangeField(null=True,
                                           blank=True)),
                ('bigints', BigIntegerRangeField(null=True, blank=True)),
                ('floats', FloatRangeField(null=True, blank=True)),
                ('timestamps', DateTimeRangeField(null=True, blank=True)),
                ('dates', DateRangeField(null=True, blank=True)),
            ],
            options={'required_db_vendor': 'postgresql'},
            bases=(models.Model, )),
        migrations.CreateModel(
            name='RangeLookupsModel',
            fields=[
                ('parent',
                 models.ForeignKey(
                     'postgres_tests.RangesModel',
                     models.SET_NULL,
                     blank=True,
                     null=True,
                 )),
                ('integer', models.IntegerField(blank=True, null=True)),
                ('big_integer', models.BigIntegerField(blank=True, null=True)),
                ('float', models.FloatField(blank=True, null=True)),
                ('timestamp', models.DateTimeField(blank=True, null=True)),
                ('date', models.DateField(blank=True, null=True)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='JSONModel',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('field', JSONField(null=True, blank=True)),
                ('field_custom',
                 JSONField(null=True, blank=True, encoder=DjangoJSONEncoder)),
            ],
            options={
                'required_db_vendor': 'postgresql',
            },
            bases=(models.Model, ),
        ),
    ]
예제 #27
0
파일: models.py 프로젝트: iMerica/dj-models
class DecimalModel(models.Model):
    n1 = models.DecimalField(decimal_places=2, max_digits=6)
    n2 = models.DecimalField(decimal_places=2, max_digits=6)
예제 #28
0
 class ScoreDecimal(models.Model):
     score = models.DecimalField()
예제 #29
0
파일: tests.py 프로젝트: iMerica/dj-models
 def test_decimal_field(self):
     field = models.DecimalField(max_digits=5, decimal_places=2)
     name, path, args, kwargs = field.deconstruct()
     self.assertEqual(path, "djmodels.db.models.DecimalField")
     self.assertEqual(args, [])
     self.assertEqual(kwargs, {"max_digits": 5, "decimal_places": 2})
예제 #30
0
 def test_decimal_field_raises_error_message(self):
     f = models.DecimalField()
     self._test_validation_messages(
         f, 'fõo', ["'fõo' value must be a decimal number."])