Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2014 16:41:24

info.rss
Зарегистрирован: 2014-01-12
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

Хочу вынести в абстракцию список полей модели

AbstrView

var = None
self.model.objects.values(var)

View
var = 'id','title','text'

1. как вообще создать такую переменную
2. …global name ‘var’ is not defined


а вообще цель, вывести одну группу полей в одном месте шаблона, а другие в других, может есть другая логика?

Отредактировано info.rss (Сен. 21, 2014 16:43:09)

Офлайн

#2 Сен. 21, 2014 16:47:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

fields=[field.name for field in instance._meta.fields]



Офлайн

#3 Сен. 21, 2014 17:54:31

info.rss
Зарегистрирован: 2014-01-12
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

def instance_dict(instance, key_format=None):
    "Returns a dictionary containing field names and values for the given instance"
    from django.db.models.fields.related import ForeignKey
    if key_format:
        assert '%s' in key_format, 'key_format must contain a %s'
    key = lambda key: key_format and key_format % key or key
    d = {}
    for field in instance._meta.fields:
        attr = field.name
        value = getattr(instance, attr)
        if value is not None and isinstance(field, ForeignKey):
            value = value._get_pk_val()
        d[key(attr)] = value
    for field in instance._meta.many_to_many:
        d[key(field.name)] = [obj._get_pk_val() for obj in getattr(instance, field.attname).all()]
    return d

тогда такая конструкция так понимаю даст более универсальный результат, но как этим пользоваться

извиняюсь, за незнание предмета, до недавнего времени занимался ширпотребом, только начал интересоваться, покажите на примерах, как это работает

Отредактировано info.rss (Сен. 22, 2014 07:40:52)

Офлайн

#4 Сен. 22, 2014 08:46:03

info.rss
Зарегистрирован: 2014-01-12
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

FishHook
здесь выводятся все имена полей, а как это сделать выборочно для каждой дочерней вьюхи?

Офлайн

#5 Сен. 22, 2014 08:54:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

Перефразируй стартовый вопрос, нифига не понятно.



Офлайн

#6 Сен. 22, 2014 11:22:37

info.rss
Зарегистрирован: 2014-01-12
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

Есть модель с полями: a, b, c, d, e, f
Вьюха DetailView
Хотелось бы в шаблоне вывести:

{% for x in one_group %}
здесь поля x.a, x.d, x.e 
{% endfor %}
{% for x in two_group %}
здесь поля x.b, x.c 
{% endfor %}
{{field.f}} # это обычная переменная
}

Отредактировано info.rss (Сен. 22, 2014 11:24:15)

Офлайн

#7 Сен. 22, 2014 11:44:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

То-ли я дурак?
Ну возьми и сделай, прям так как написал

{% for x in queryset %}
 {{ x.a }}, {{ x.d }}, {{ x.e }} 
{% endfor %}
{% for x in two_group %}
 {{ x.b }}, {{ x.c }} 
{% endfor %}
}



Офлайн

#8 Сен. 22, 2014 12:37:07

info.rss
Зарегистрирован: 2014-01-12
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

{% for x,y in queryset %}
  <p class="label">{{x}}</p>
  <p class="value">{{y}}</p>
{% endfor %}
как здесь в queryset передать только те поля которые нужны?
вьюха DetailView, т.е только одна запись учавствует в шаблоне

к примеру можно было бы в моделе товара сделать поле Boolean, и поставить True в нужных полях
потом выводить:
{% for x,y in queryset %}
{% if Boolean == True %}
  <p class="label">{{x}}</p>
  <p class="value">{{y}}</p>
{% endif %}
{% if Boolean == False %}
  <p class="label">{{x}}</p>
  <p class="value">{{y}}</p>
{% endif %}
{% endfor %}
Но это как-то мне кажется стремно

Отредактировано info.rss (Сен. 22, 2014 12:41:24)

Офлайн

#9 Сен. 22, 2014 13:21:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

Ок, может кто-то найдется, кто способен понять твои чаяния, я умываю руки, ибо не понял вообще ничего. В частности: что значит “в queryset передать” и зачем делать цикл если “только одна запись”.



Офлайн

#10 Сен. 22, 2014 13:47:22

info.rss
Зарегистрирован: 2014-01-12
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная для Values(variable)

слово queryset, это из вашего примера {% for x in queryset %}
вообще-то {% for x in one_group %}
цикл, чтобы не писать в шаблоне, типа:

{{item.a}}
{{item.b}}
{{item.c}}
{{item.d}}
когда можно наверное так:
{% for x,y in one_group %}
  <p class="label">{{x-это название поля}}</p><p class="value">{{y-это значение поля}}</p>
{% endfor %}
это цикл не значений, а полей с их значениями

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version