Форум сайта python.su
Есть таблица бд на 24 поля. Сделана выборка:
def detail(request, the_model):
the_model = urllib.unquote(the_model)
gadget = PhoneModel.objects.get(model_name = the_model)
features = Feature.objects.get(model_name = gadget.id)
{{ features.network }}
e.t.c
class Feature(models.Model):
model_name = models.ForeignKey(PhoneModel)
control = models.CharField(max_length = 150, blank = True)
network = models.CharField(max_length = 150, blank = True)
navigation = models.CharField(max_length = 150, blank = True)
sim = models.IntegerField(max_length = 1, blank = True)
screen = models.CharField(max_length = 150, blank = True)
camera = models.CharField(max_length = 150, blank = True)
audio = models.CharField(max_length = 150, blank = True)
video = models.CharField(max_length = 150, blank = True)
images = models.CharField(max_length = 150, blank = True)
e_book = models.CharField(max_length = 150, blank = True)
memory = models.CharField(max_length = 150, blank = True)
messsages = models.CharField(max_length = 150, blank = True)
data_transfer = models.CharField(max_length = 150, blank = True)
applications = models.CharField(max_length = 150, blank = True)
phone_book = models.CharField(max_length = 150, blank = True)
organizer = models.CharField(max_length = 150, blank = True)
ringtone = models.CharField(max_length = 150, blank = True)
operation = models.CharField(max_length = 150, blank = True)
the_set = models.CharField(max_length = 300, blank = True)
color = models.CharField(max_length = 150, blank = True)
size = models.CharField(max_length = 40, blank = True)
language = models.CharField(max_length = 350, blank = True)
extra = models.CharField(max_length = 350, blank = True)
Офлайн
я делал генератор для этого:
#в модели
@property
def listable_properties(self):
props_names = ['foundation', 'wall', 'blocking', 'ceiling',
'roof', 'tiling', 'decoration', 'socle']
for pname in props_names:
field = self._meta._name_map.get(pname, None)
if field and getattr(self, pname):
yield {'name': field[0].verbose_name, 'value': getattr(self, pname)}
{# в шаблоне #}
{% for prop in project.listable_properties %}
<dt>{{ prop.name }}:</dt>
<dd>{{ prop.value }}</dd>
{% endfor %}
Офлайн
appetito, спасибо. Функция оказалась мне довольно сложной. Попробую разобраться.
Функция написана в классе модели?
Я не нашел инфы о _meta, _name_map. Понял, что это “какие-то” атрибуты классов моделей. Что они возвращают, чем являются?
Почему field.verbose_name ?
И самое главное, не понятно, как применить эту функцию к выборке?
Отредактировано (Апрель 25, 2011 12:19:39)
Офлайн
Поищите книжку Pro Django. Автор Marty Alchin. Там есть что вам нужно
Офлайн
svas, спасибо.
Офлайн