Django - кастомизация полей формы модели

Django - кастомизация полей формы модели

Вся моя работа использует web технологии поэтому, для меня принципиальна гибкость в достижении удобства использования. По этой причине каждую систему, недосистему, фреймворк и чего там еще бывает... в первую очередь проверяю на наличие возможности организации кастомного ввода данных, написания собственных полей, например а-ля 1с-совский справочник. Django не стала исключением и сразу после проверки местного ORM на работоспособность, попробовал написать пользовательское поле ввода в Django(python). На удивление джанго фреймворк меня порадовал. В пинимальное количество кода удалось повлиять на генерацию разметки поля ввода Django. Ниже код, толку от него мало, но как отправная точка в изучении пригоден.

# Класс собственного виджета
class MyWidget(AdminTextInputWidget):
    def render(self, name, value, attrs=None):
        return "<span style='border: 1px red solid;' >-------</span>";
        #return AdminTextInputWidget.render(self, name, value, attrs=attrs)

# Класс поля модели
class MyField(models.CharField):
    def formfield(self, **kwargs):
        kwargs["widget"] = MyWidget
        print kwargs
        return models.CharField.formfield(self, **kwargs)

# Класс модели
class Entitest(models.Model):
    category = models.ForeignKey(Category)
    name = models.CharField(max_length = 90, unique = True)
    testfield = MyField(max_length = 90, unique = False)
    
    def __str__(self):
        return (self.name + "(" + self.category.name + ")").encode('utf8') # у меня питон 2

Разработка собственного виджета для формы Django

Возврат к списку