Omar Al-Howeiti
Omar Al-Howeiti

Reputation: 1305

handle duplicate attribute in django model fields, looking for best practise

I'm having a senario, where my model have different fields but the share the same attribute for example I have the following model:

class Skills(models.Model):
    pace = models.IntegerField()
    shooting = models.IntegerField()
    passing = models.IntegerField()
    dribbling = models.IntegerField()
    defending = models.IntegerField()
    physic = models.IntegerField()
    gk_diving = models.IntegerField()
    gk_handling = models.IntegerField()
    gk_kicking = models.IntegerField()
    gk_reflexes = models.IntegerField()
    gk_speed = models.IntegerField()
    .
    .
    .

So Is there a way that can let me writing my model in better way?

I mean when I want to update, for example, from models.IntegerField() to models.IntegerField(validators=[MaxValueValidator(100),MinValueValidator(1)]). I have to do the update for the whole fields.

Upvotes: 1

Views: 112

Answers (1)

Brian Destura
Brian Destura

Reputation: 12068

You can do something like this:

class MyCustomIntegerField(models.IntegerField):
    default_validators = [MaxValueValidator(100), MinValueValidator(1)]

then use them on your models:

class Skills(models.Model):
    pace = MyCustomIntegerField()
    ...

Upvotes: 1

Related Questions