Задать вопрос
  • Как правильно отпарсить JSON во view Django?

    @nurzhannogerbek Автор вопроса
    Александр Глухов, разобрался со своим кодом ранее опубликованном коде view. Нужно было добавить:
    parent_id=None - для первого цикла
    parent_id=item['id'] - для второго цикла
    parent_id=child['id'] - для третьего цикла


    Хоть он и работает, но полностью соглашусь с вами, что он не универсальный. А как применить данный ваш метод к модели данных? Немного запутался.
  • Как правильно отпарсить JSON во view Django?

    @nurzhannogerbek Автор вопроса
    Александр Глухов в целом я понял как получить позицию и уровень вложенности, но не могу разобраться как получить parent_id. Можете подсказать еще раз пожалуйста.

    position = 0
    for item in self.request_json:
        Document.objects.filter(id=item['id']).update(tree_id=position, level=0, parent_id=?)
        position += 1
        if 'children' in item:
            for child in item['children']:
                Document.objects.filter(id=child['id']).update(tree_id=position, level=1, parent_id=?)
                position += 1
                if 'children' in child:
                    for deep_child in child['children']:
                        Document.objects.filter(id=deep_child['id']).update(tree_id=position, level=2, parent_id=?)
  • Как правильно отпарсить JSON во view Django?

    @nurzhannogerbek Автор вопроса
    Здравствуйте! Во первых проблема еще в том, что в плагине Nestable по умолчанию уровень вложенности равен 5. Можно поменять уровень вложенности в помощью настройки: maxDepth. В моем случаи стоит 3. То есть внутри children может находится еще один children. Получается я должен добавить еще один цикл в ваш код, я прав? Во вторых как далее по id изменить данные ранее упомянутых полей? Можете пожалуйста подсказать?

    Document.objects.filter(id=id).update(tree_id=?, level=?, parent_id=?)
  • Как правильно отпарсить JSON во view Django?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, Здравствуйте! На данный момент делаю функционал перемещения. Редактирование и удаление в перспективе. А в чем в принципе проблема? Я как раз думал наоборот. Если при каждом перемещении ветки делать ajax запрос, во первых на БД подает нагрузка большая, во вторых пользователь может случайно сделать ошибку и не туда переместить. Поэтому я подумал целесообразнее было бы создать кнопку для сохранения новой структуры дерева по нажатию на которой только происходит сохранение новой структуры дерева. Я думаю так было бы правильней, вам так не кажется?
  • Как создать древовидную структуру в Django?

    @nurzhannogerbek Автор вопроса
    Pavel Denisov, Здравствуйте! Конечно вы правы, все познается в сравнении. Просто думал что Владимир Куц уже имеет опыт работы с обоями методами и знает скажем так плюсы и минусы обоих методов. Поэтому спросил. Уже делаю древовидную структуру на django-mptt, как сделать модель данных на "Closure Table" так и не разобрался до конца. Может вы подскажите пожалуйста ваше виденье модели данных на "Closure Table"?
  • Как создать древовидную структуру в Django?

    @nurzhannogerbek Автор вопроса
    Здравствуйте! Oracle выбран из-за того, что у заказчика стоит данная БД и на текущий момент им используется таблица с шаблоном проектирования иерархических данных "Nested Sets". До написания самого вопроса уже был ознакомлен с MPTT и если не ошибаюсь он использует как раз "Nested Sets". Было решено уйти от "Nested Sets" в сторону "Closure Table". Данных очень много и есть определенные трудности с добавлением, удалением и перемещением узлов на текущий момент. На БД приходят огромные запросы и из за этого страдает производительность. Что вы думаете об этом и работали ли вы раньше с "Closure Table"?
  • Как создать древовидную структуру в Django?

    @nurzhannogerbek Автор вопроса
    Здравствуйте! Oracle выбран из-за того, что у заказчика стоит данная БД и на текущий момент им используется таблица с шаблоном проектирования иерархических данных "Nested Sets". До написания самого вопроса уже был ознакомлен с MPTT и если не ошибаюсь он использует как раз "Nested Sets". Было решено уйти от "Nested Sets" в сторону "Closure Table". Данных очень много и есть определенные трудности с добавлением, удалением и перемещением узлов на текущий момент. На БД приходят огромные запросы и из за этого страдает производительность. Что вы думаете об этом и работали ли вы раньше с "Closure Table"?
  • Как переопределить метод has_perm в Джанго?

    @nurzhannogerbek Автор вопроса
    javedimka, пока что единственный рабочий вариант такой, но не уверен, что в будущем не будет проблем со скоростью. Как вы считаете?
    permission = Permission.objects.get(codename='use_tool')
    if permission in user.user_permissions.all():
        print "True"
    else:
        print "False"
  • Как переопределить метод has_perm в Джанго?

    @nurzhannogerbek Автор вопроса
    javedimka, таблицы auth_group, auth_group_permissions, auth_user_groups пустые. Нет никаких записей.
  • Как переопределить метод has_perm в Джанго?

    @nurzhannogerbek Автор вопроса
    javedimka, Только что проверил. Вывел в консоль user.get_all_permissions() и она возвращает список всех существующих прав в системе, включая "use_tool". Хотя посмотрел в БД и там у данного конкретного суперпользователя нет права "use_tool". Думаю get_all_permissions работает по такому же принцему как и has_perm. Заочно возвращает True если пользователь суперпользователь. Поэтому метод get_all_permissions() в моем конкетном случаи не работает =(
  • Как откатиться к определенной версии в django-reversion?

    @nurzhannogerbek Автор вопроса
    Александр Брагин, да вы правы, у меня происходит переход по ссылки. Решил использовать ссылку так как при откате происходит переадресация. В итоге остановился на следующем варианте:

    class ArticleRevert(RedirectView):
    
        @reversion.create_revision()
        def get_redirect_url(self, *args, **kwargs):
            # Здесь Код
            return reverse(здесь url адрес)


    P.S. Можете пожалуйста ваши комментарии вынести в ответ, я отмечу ответ как правильный.
  • Как откатиться к определенной версии в django-reversion?

    @nurzhannogerbek Автор вопроса
    Попробовал ваш последний совет и заработало. Хоть метод и рабочий, но немного грязный или как вы считаете? Также я тоже считаю что, если происходит влияющих на состояние БД, то лучше использовать post запрос. Проблема в том что если поменять get на post в нижестоящем коде то вылетает исключение:

    LevelName: WARNING | Message: Method Not Allowed (GET): /article/326/reversions/21/article_revert/
    LevelName: WARNING | Message: "GET /article/326/reversions/21/article_revert/ HTTP/1.1" 405 0


    class ArticleRevert(View):
    
        @reversion.create_revision()
        def get(self, request, *args, **kwargs):
            #  Здесь остальной код
  • Как откатиться к определенной версии в django-reversion?

    @nurzhannogerbek Автор вопроса
    Вот оно как. Думаю нужен метод post и наследовать не от View. Как бы вы решили эту задачу?

    P.S. Все же считаю, что RevisionMixin нужен в моем конкретном случаи, так как я пытаюсь установить комментарий (set_comment). В FBV для этих целей использовал бы @reversion.create_revision().
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Cпасибо вам за помощь! :)
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, мы одновременно написали, но вы первее ;) Вынесите в ответ пожалуйста я отмечу ваш ответ как правильный.
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, проблему решил следующим образом. Ранее я вам отправлял ссылку на код из приложения. Там я заметил параметр fields. Попробовал cледующее и получилось зафиксировать поля:

    @reversion.register(fields=("head", "head_ru", "head_en", "head_kz"))
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, А вы уверены? Убрал @reversion.register(), но теперь нефиксируются никакие изменения и невозможно зайти на страницу с историей изменений. Выводит ошибку:
    RegistrationError: <class 'slider.models.Slide'> has not been registered with django-reversion
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, вот как выглядит форма. Поле head_ru не стал добавлять в форму так как в настройках у меня указано LANGUAGE_CODE = 'ru' и значение из поля head автоматически записывается в поле head_ru.

    class SlideForm(forms.ModelForm):
        class Meta:
            model = Slide
            fields = ('head', 'head_en', 'head_kz',)
    
        def __init__(self, *args, **kwargs):
            super(SlideForm, self).__init__(*args, **kwargs)
            self.fields['head'].widget.attrs = {
                'class': 'form-control',
                'id': 'head',
            }
            self.fields['head_en'].widget.attrs = {
                'class': 'form-control',
                'id': 'head_en',
            }
            self.fields['head_kz'].widget.attrs = {
                'class': 'form-control',
                'id': 'head_kz',
            }
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, то есть у вас фиксируются изменения в полях, созданные приложением django-modeltranslation?

    У меня в INSTALLED_APPS нет django.contrib.admin. Прикладываю свой список c которым только что создал еще одну запись но поля head_ru, head_en, head_kz так и не фиксируются =(

    INSTALLED_APPS = [
        'modeltranslation',  # "django-modeltranslation" application
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django.forms',
        'django_select2',
        'slider',  # "slider" application
        'custom_app_1', 
        'custom_app_2',
        'reversion', # django-reversion application
    ]
  • Как объединить приложения django-modeltranslation и django-reversion?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов, залез под капод приложения django-reversion и заметил комментарий # Parse fields Кажется приложение парсит только те поля которые указаны в модели данных. Видити ли вы возможность как-то явно указать поля head_ru, head_en, head_kz для приложения django-reversion?!