LINUX.ORG.RU

Сообщения django2014

 

где повлиять на QuerySet поля из CBV

Форум — Development

В некоторой модели имеется ForeignKey поле. Для этой модели создается представление на базе CreateView, позволяющее сделать запись. Какой метод класс CreateView нужно переопределить, что ограничить список значений для конкретного поля.

Ну например,

class Author(models.Model):
    name =  models.ForeignKey(User)

class AuthorCreate(CreateView):
    model = Author
    fields = ['name']

мне нужно, чтобы пользователь выбирал не из всех пользователей, к-е есть в БД, а только из пользователей, например, логин которых начинается на 'b': т.е. пользователей из списка

User.objects.filter(username='b').

 

django2014
()

python преобразование переменной

Форум — Development

Имеется список

flist=[ 'f1', 'f2', 'f3', ... 'f133' ]
можно ли получить вот такой набор аргументов

Sum('f1'), Sum('f2'), Sum('f3'), ... Sum('f133') 

не набирая их.

нужно для:

aggregate( Sum('f1'), Sum('f2'), Sum('f3'), ... Sum('f133')  )

 

django2014
()

подобрать выборку для шаблона

Форум — Development

Имеется модель:

class Data(models.Model):
    login =  models.ForeignKey(User)
    sec =  models.PositiveIntegerField(u'section')
    f = models.PositiveIntegerField(u'data', default=2)
    def __unicode__(self):
        return str(self.f)

Задача:

Нужно сделать выборку для списка значений sec, который обзначим list_section и отобразить их в шаблоне по секциям. При этом результаты выборки в каждой sec нужно пронумировать. Т.е., например, list_section=[1,2,3], то сначала например результаты выборки для sec=1, затем sec=2 ...:

sec = 1

1. первая запись выборки для sec = 1

2. вторая запись выборки для sec = 1

...

sec = 2

1. первая запись выборки для sec =2

2. вторая запись выборки для sec =2

...

казалось бы, наиболее эффективно выбрать так, за один раз

list_section=[1,2,3,4]
context['data']=Data.objects.filter(sec__in = list_section).values('sec','f')
context['data']
[{'sec': 1L, 'f': 2L}, {'sec': 2L, 'f': 4L}, {'sec': 1L, 'f': 22L}, {'sec': 3L, 'f': 33L}, {'sec': 4L, 'f': 44L}]
но при разборе в шаблоне возникают проблемы: сначала во внешнем цикле перебирать все возможные значения sec, а затем во внутреннем цикле перебирать результаты выборки. При этом не возможно пронумеровать результаты выборки по каждой теме.

другой вариант: делать выборку в цикле

for s in list_section:
    context[s]=Data.objects.filter(sec=s).values('sec','f')
в шаблоне опять приходится перебираь все возможные значения sec, и если contex[cur_sec] не пустой, то организовывать второй внутренний цикл. При этом можно и нумеровать результат в каждой sec. Задача решена, но, мне не нравиться выборка в цикле.

Можно ли как-то решить задачу и обойти выборку в цикле?

 ,

django2014
()

django ORM-выборка из двух не связанных таблиц одновременно

Форум — Development

имеются две таблицы:

mysql> select * from t1;
+------+------+
| x    | y    |
+------+------+
|    1 |    2 |
|    2 |    3 |
+------+------+

mysql> select * from t2;
+------+------+
| x    | z    |
+------+------+
|    1 |    4 |
|    3 |    5 |
+------+------+

нужно сделать вот такую выборку, не прибегая к SQL:

mysql> SELECT t1.y,t2.z  FROM t1,t2 where t1.x=t2.x;
+------+------+
| y    | z    |
+------+------+
|    2 |    4 |
+------+------+

 ,

django2014
()

RSS подписка на новые темы