ФорумПрограммированиеPythonDjango → Как получить пустое поле вместо Null

Как получить пустое поле вместо Null

  • john2dark

    Сообщения: 98 Репутация: N Группа: Адекваты

    Spritz 22 марта 2016 г. 14:53

    Подскажите пожалуйста, чё я делаю не так?
    Есть вот такая моделька:

    class Organization(models.Model):
        user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                    on_delete=models.CASCADE)
        name = models.CharField(_(u'name'),
                                max_length=50,
                                blank=True,
                                null=True,
                                default='',
                                unique=False)
    
    тут еще кучка полей поскипана
    
        class Meta:
            db_table = 'organization'
            ordering = ('name',)
            abstract = False
    
        def __unicode__(self):
            return self.name

    в шаблоне я могу указать прямо вот так:

    input type="text" value="{{ user.organization.name }}" name="org_name" maxlength="50"

    оно работает и честно показывает на странице поле с именем организации внутри, ровно до тех пор, пока существует запись в базе mysql.
    Удаляю запись из таблицы organization, т.е. для текущего юзверя записей нет и на странице в поле name начинает торчать NULL.
    Ладно, хуй с ним, думал поймаю это в модельке чем то вроде

        @property
        def get_name(self):
            logger.debug('name: ' + self.name)
    
            if self.name:
                return self.name
            else:
                return ''

    ну или как то так с чеком на NULL, делаю в шаблоне

    input type="text" value="{{ user.organization.get_name }}" name="org_name" maxlength="50"

    и офигиваю окончательно, всё тот же NULL, да еще и в консоли НЕТ записи от логгера.
    Я, сцуко, напуган и потерян :)
    Конечно можно по-дефолту, при создании юзера пихать пустую запись в табличку Organization с ключом юзера и '' вместо name как default, но мне это не надо. Таблица может быть пустой.

  • Sinkler

    Сообщения: 9648 Репутация: N Группа: в ухо

    Spritz 22 марта 2016 г. 14:57, спустя 3 минуты 27 секунд

    ну вроде как если у юзверя пусто в поле user.organization, то get_name и не будет вызваться, потому что user.organization не объект Organization, а None

  • john2dark

    Сообщения: 98 Репутация: N Группа: Адекваты

    Spritz 22 марта 2016 г. 14:58, спустя 1 минуту 15 секунд

    Технически тогда это можно вытащить на front, почекать там и заменить на пустоту.

  • john2dark

    Сообщения: 98 Репутация: N Группа: Адекваты

    Spritz 22 марта 2016 г. 15:09, спустя 11 минут 14 секунд

    Что то туплю, сделал проще:

    value="{% if user.organization.name != 'NULL' %}{{ user.organization.name }}{% endif %}"
  • Sinkler

    Сообщения: 9648 Репутация: N Группа: в ухо

    Spritz 22 марта 2016 г. 15:13, спустя 3 минуты 58 секунд

    да можно так

    {{ user.organization.name|default:'' }}
  • john2dark

    Сообщения: 98 Репутация: N Группа: Адекваты

    Spritz 22 марта 2016 г. 15:22, спустя 8 минут 53 секунды

    Я так делал уже, пихал и default, и default_if_none
    но во-первых почему то получаю подсветку ошибки в пайчарме

    а во-вторых не работает, все равно показывает NULL

  • Sinkler

    Сообщения: 9648 Репутация: N Группа: в ухо

    Spritz 22 марта 2016 г. 16:11, спустя 48 минут 45 секунд

    почему то получаю подсветку ошибки в пайчарме

    настройки - languages & frameworks - python template languages - django

    там по дефолту jinja вроде стоит

  • john2dark

    Сообщения: 98 Репутация: N Группа: Адекваты

    Spritz 22 марта 2016 г. 16:51, спустя 40 минут 41 секунду

    спасибо за подсказку

Пожалуйста, авторизуйтесь, чтобы написать комментарий!