1. sarument

    20.01.2009

    0 ↑
    0 ↓
    Вопрос по кустомизации админки.
    Нужно сделать так чтоб в одной из моделей в поле ManyToMany отображались только те элементы которые уже относятся к данному.
    Т.е. добавляется новый элемент и его поле ManyToMany пустое, добавить в него элементы можно только новой загрузкой (Django 0.96.2).
  2. Не совсем понял вопрос, буду отвечать интуитивно.

    Для ManyToManyField можно указать limitchoicesto={'count__gt':0}, правда в этом случае требуется добавить дополнительное поле счетчик. Или придумать свой фильтр...

    Есть и другие способы борьбы с портянкой, указание флага rawidfield... В этом случает, при создании элемента его поле действительно будет пустым с лупой для добавления сбоку...

  3. sarument

    20.01.2009

    0 ↑
    0 ↓
    У меня к каждой новости может прикрепляться некоторое количество картинок при помощи ManyToMany. Т.е. при добавлении новости в списке картинок имеем список всех картинок имеющихся на сайте - это не нужно, нужно чтоб это поле было пустым и добавлялись только новые фотографии (и после этого появлялись в списке) и так с каждой следующей новостью.
  4. Следовательно: картинки бывают новые и уже добавленные. Тогда добавьте, либо поле флаг использования ( used ), либо выводите только до некоторой даты (например сегодняшние).

    Только после выше приведеных махинаций, вы не сможете редактировать новости спустя некоторое время. Список картинок редактируемой новости должен содержать также новости уже подключенные. Иначе при редактировании, картинки исчезнут.

    Поэтому придется писать custom форму для редактирования новостей, но это было бы проще сделать в Django 1.0.2.

    Почему вы не хотите добавлять эти картинки, как rawidfields? В этом выбор картинок, будет в admin отображении списка картинок со всеми подключенными фильтрами. И ни каких проблем с портянками + дополнительные удобства.

  5. sarument

    20.01.2009

    0 ↑
    0 ↓
    > Почему вы не хотите добавлять эти картинки, как rawidfields?

    не разобрался как это делать. Буду доки курить.

    > Только после выше приведеных махинаций, вы не сможете редактировать новости спустя некоторое время.

    Редактировать нужно (((
  6. redbaron

    20.01.2009

    0 ↑
    0 ↓
    А где про этот rawidfield почитать можно? В оф. доках не нашлось что-то. Д
  7. В современном описании админке docs/ref/contrib/admin.txt, раньше было в описании ManyToManyField.

    # OLD:
    class MyModel(models.Model): 
        field1 = models.ForeignKey(AnotherModel, raw_id_admin=True)
    
        class Admin:
            pass
    
    # NEW:
    class MyModelAdmin(admin.ModelAdmin):
        model = MyModel
        raw_id_fields = ('field1',)
    

    Это фрагмент полезного документа "Backwards-incompatible changes", полезного для сравнения старого и нового django.

  8. sarument

    21.01.2009

    0 ↑
    0 ↓
    raw_id_admin=True выносит левые элементы в отдельное окно. А нужно чтоб они вообще отсутствовали в списке (были только те которые вновь добавлены). Решения этой проблемы ненашел((.
  9. Еще раз напоминаю, что эта форма используется в 2 случаях: при редактировании объекта и его добавлении.

    Потому, либо меняешь версию Django 0.96.2 и пишешь свою форму для редактирования с зависимым ограничением колличества картинок (все новые + все прикрепленные).

    Либо используешь фильтр для вывода списка картинок, если не охота каждый раз кликать справа по фильтру - напиши redirect на ссылку /admin/app/image/ в

    /admin/app/image/?is_new__exact=1  или
    ?date__day=21&date__month=1&date__year=2009
    

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.