#python #django-queryset
#python #django-набор запросов
Вопрос:
Я хочу отобразить значение из столбца "sett_name"
, значение равно (cisco и mikrotik). но то, что отображается в html, является "c_Setting object (1) and c_Setting object (2)"
.
Я пробовал тот же код на python 2.7 с django 1.8. Это работает, но когда я пытаюсь на python 3 с django 2.1.7, это не работает (я уже изменил код на python3)
Вот model.py
скрипт :
class Ip(models.Model):
ipaddr = models.CharField(max_length=255)
vendor = models.CharField(max_length=255)
def __str__ (self):
return self.ipaddr
def __str__(self):
return 'ip address : %s: , vendor : %s' % (self.ipaddr, self.vendor)
class c_Setting(models.Model):
class Meta:
db_table = 'autonet_setting'
sett_name = models.CharField(max_length=255)
def __unicode__(self):
return self.sett_name
Вот form.py
скрипт :
from django import forms
from .models import Connect, Ip, c_Setting as settings
class IpForm(ModelForm):
vendor = forms.ModelChoiceField(queryset=settings.objects.all().order_by('sett_name'))
class Meta:
model = Ip
fields = ['ipaddr','vendor']
class SettingForm(ModelForm):
class Meta:
model = settings
fields = [
'sett_name',
...
...
]
...
...
...
вот html-файл :
{{ ipform.management_form }}
{% for form in ipform %}
...
...
form.vendor
...
...
{% endfor %}
Вот view.py
скрипт :
...
...
ipform = IpFormset()
return render(request, 'config/code_based.html', {'form': formm, 'logins': Connect.objects.all(), 'ipform': ipform, 'status': status })
...
...
как я уже говорил, оно "c_Setting object (1) and c_Setting object (2)"
не "mikrotik and cisco"
отображается. Заранее спасибо
Ответ №1:
Вам нужен __str__
метод, подобный IP, а не __unicode__
один
Комментарии:
1. спасибо, это решает мою проблему, между django 1.8 и django 2.0 есть такие различия? потому что, когда я запускаю свой код на django 1.8, он работает
2. Нет, разница между Python 2 и Python 3.