Набор запросов Django 2.0 отображает «объект (1)» не отображаемое значение

#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.