Отвечая на ваш второй вопрос - не очевидно, что вы подразумеваете под «ди git ограничение». Если вы заинтересованы в том, чтобы значение не выходило за пределы определенных диапазонов, вы можете использовать validators :
from django.core.validators import MaxValueValidator, MinValueValidator
class Tag(models.Model):
'''Items have tag will have according discount percentage'''
tag_discount_percentage = models.IntegerField(default=0, validators=[MinValueValidator(1), MaxValueValidator(100)])
Иначе, если вы хотите ограничить десятичные разряды, вам следует использовать поле десятичное вместо целого числа.
Также, комментируя свой первый вопрос - вы просто не можете установить значение по умолчанию, связанное со значением другого поля, потому что в момент, когда экземпляр (запись) сохранено, значения полей еще не настроены. default
agrument может вызываться, но без ссылки на объекты, для которых он используется. Вместо этого вы можете использовать сигнал pre_save , чтобы установить значение поля «по умолчанию» в зависимости от других полей.