Serg009
Янв. 24, 2017 16:42:42
Здравствуйте.
В классе формы для одного из полей я задаю такую строку:
importanceaccount = forms.ModelChoiceField(queryset=ImportanceAccountsModel.objects.order_by('-id').all(), label='Важность', empty_label=None)
Также в модели есть класс:
class ImportanceAccountsModel(models.Model):
class Meta:
db_table = 'importance_accounts'
ordering = ['name']
verbose_name = 'уровень важности'
verbose_name_plural = 'уровень важности'
name = models.CharField(max_length=40, unique=True, db_index=True)
def __str__(self):
return self.name
Но почему-то при выводе элементов формы в поле нахождения выводимого содержимого select для всех пунктов выдается, вместо названия
ImportanceAccountsModel object
Если кто знает в чем проблема, подскажите пожалуйста.
FishHook
Янв. 24, 2017 16:50:47
def __unicode__(self):
return self.name
Serg009
Янв. 24, 2017 16:55:01
def __unicode__(self):
return self.name
Такой вариант я тоже делал, ничего не меняется.
На всякий случай, я использую
Версия python: 3.5.2
Версия django: 1.10.5
FishHook
Янв. 24, 2017 17:54:49
А как форму рендерите в шаблоне?
Serg009
Янв. 24, 2017 18:04:09
В шаблоне:
<form action="" method="post">
{% csrf_token %}
....
<div class="form-group">
<div class="row">
<label for="{{ form.importanceaccount.id_for_label }}" class="col-sm-2 control-label text-right">{{ form.importanceaccount.label }}</label>
<div class="col-sm-3">{{ form.importanceaccount }}</div>
</div>
</div>
....
</form>
Serg009
Янв. 24, 2017 19:14:34
Я еще в самом начале чтобы то что я делаю можно в браузере смотреть через apache2, а не только через manage.py runserver.
Сейчас (надо было конечно раньше) решил проверить, как это выглядит используя
manage.py runserver
И оказалось, что через встроенный в django сервер выводится все как надо, а вот почему то через сервер apache2 получается такая ошибка, о которой я здесь написал.
Поэтому, если кто знает, подскажите, в чем конфликт, почему во внутреннем django сервере все нормально, а при использование apache2 происходит такая ошибка, которую я описал выше?
FishHook
Янв. 25, 2017 05:52:21
Serg009
Такого просто не может быть, потому что весь код выполняется не доходя до апача. У вас под апачем либо работает другая версия питона, либо другая версия джанги, либо другая версия вашего кода. Встроенный сервер сам умеет перезапускать приложение, когда вы изменяете код. Апач этого, конечно, не делает. После манипуляций с кодом его нужно рестартовать вручную. Может быть вы просто не делаете необходимых операций и не видите ваших изменений потому, что апач их не применил?
Serg009
Янв. 25, 2017 07:58:07
Я вчера до самого вечера обновлял и никаких изменений не было, но сегодня утром, я снова проверил через apache2, этой ошибки уже не было.
В общем получается, что это я что-то неправильно сделал (вроде бы по Ctrl+F5 в браузере должно обнавляться полностью), но данные не обновлялись.
Я благодарю за ответы.
FishHook
Янв. 25, 2017 08:31:19
Serg009
Да при чем здесь браузер то?
Вы пишите серверный код. Код выполняется на сервере. Сервером управляет апач. Где здесь браузер?
Ваш код на питоне и браузер не имеют ничего общего. Надо перезагружать сам апач, а не браузер. Девелоперский сервер не надо, он сам это делает.