2017-02-21 18 views
1

я несколько пунктов/Список хранящихся в базе данных хранятся в виде ['First Form Field', 'Second input Field']Как получить список из базы данных в html в python - Django?

я хочу, чтобы все эти элементы из столбца в виде списка в моем переднем конце страницы HTML Я получаю вещи, как

ff= form_fields.objects.all() return render(request,'user/index.html',{'message': welcome,'ff': ff})

ИНДЕКС:

{% for x in ff%} 
     <tr> 
      <td> 
       {{ x.id}} 
      </td> 
      <td> 
       {{ x.name }} 
      </td> 
      <td> 
       {% for y in x.text_field %} 
       <label>{{ y }}</label> 

        {% endfor %} 
      </td> 
      <td> 

модели

class form_fields(models.Model): 
    id = models.AutoField(primary_key=True) 
    form_name = models.CharField(max_length= 50, null=True) 
    text_field = models.CharField(max_length=255, null= True) 

Я хочу, чтобы этот список сохранен в этой таблице в виде списка.

+0

вы можете поместить свои модели подробности здесь, ваши возможности? – Cadmus

+0

добавлен мой модельный класс @SnakeFcz – Sidharth

+0

В каком colunm вы храните '['First Form Field', 'Second input Field']'? –

ответ

2

создать собственное ListField поля для решения этой проблемы

from django.db import models 
import ast 

class ListField(models.TextField): 
    __metaclass__ = models.SubfieldBase 
    description = "form fields" 

    def __init__(self, *args, **kwargs): 
     super(ListField, self).__init__(*args, **kwargs) 

    def to_python(self, value): 
     if not value: 
      value = [] 

     if isinstance(value, list): 
      return value 

     return ast.literal_eval(value) 

    def get_prep_value(self, value): 
     if value is None: 
      return value 

     return unicode(value) 

    def value_to_string(self, obj): 
     value = self._get_val_from_obj(obj) 
     return self.get_db_prep_value(value) 

class Form_Fields(models.Model): 
    id = models.AutoField(primary_key=True) ## id builtin in django models 
    form_name = models.CharField(max_length= 50, null=True) 
    form_fields = ListField() 


[1]:Form_Fields.objects.create(form_name="test", form_field=['First Form Field', 'Second input Field']) 


{% for x in ff%} 
     <tr> 
      <td> 
       {{ x.id}} 
      </td> 
      <td> 
       {{ x.form_name }} 
      </td> 
      <td> 
       {% for y in x.form_fields %} 
        <label>{{ y }}</label> 
       {% endfor %} 
      </td> 
      <td> 
    </tr> 
{% endfor %} 
1

Изменить models.py к этому: -

from django_mysql.models import JSONField, Model 

class form_fields(models.Model): 
    id = models.AutoField(primary_key=True) 
    form_name = JSONField() 
    text_field = models.CharField(max_length=255, null= True) 

views.py:-

form_fields.objects.create(id=id, attrs=['First Form Field', 'Second input Field'],text_field='TextField') 

form_fields.objects.filter(attrs=['First Form Field', 'Second input Field']) 

Вы добавляете массив в символьных полей, так что вы будете получать каждую вещь как character.Other вещи все, что у вас есть, будет работать нормально.

+0

Когда я добавляю ArryField. он показывает ошибку – Sidharth

+0

Эта инспекция обнаруживает имена, которые должны быть разрешены, но нет. Из-за динамической отправки и утиной печати это возможно в ограниченном, но полезном числе случаев. Элементы верхнего уровня и уровня класса поддерживаются лучше, чем элементы экземпляра. – Sidharth

+0

и я использую базу данных mysql – Sidharth