В наборе запросов Django 2.0 «объект (1)» не отображается - PullRequest
0 голосов
/ 27 марта 2019

Я хочу отобразить значение из столбца "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 Ответ

1 голос
/ 27 марта 2019

Вам нужен __str__ метод, как на IP, а не __unicode__ one

...