Хранение просачивается Django Admin

Добавьте 2 деления, одно для мобильного и одно для настольного использования, так же, если в настольном компьютере скрыть мобильное устройство, а в мобильном - скрыть настольное устройство.

Вы должны поместить код внутри 2 делений для отображения виджета, предоставленного приложением обзора, которое вы используете в своем магазине. Если какая-либо помощь, я доступен, чтобы помочь вам. Я создал 150+ магазинов на shopify и все еще создаю больше.

5
задан Josh Scholl 14 October 2013 в 14:31
поделиться

4 ответа

К сожалению, нет никакого простого способа сделать это. Фильтрация, кажется, не сохраняется ни в какой переменной сеанса.

Нажатие назад дважды является нормальным методом, но это может быть громоздким и раздражающим, если Вы только что изменили объект так, чтобы это больше не показывали с помощью фильтра.

Если это - просто одноразовое, нажмите назад дважды или пройдите фильтрацию снова, это - самый легкий путь.

Если Вы будете собираться быть фильтрацией чаще, или Вы просто хотите узнать о взламывании администратора (который довольно открыт и легок), то Вы захотите записать FilterSpec.

Взгляните здесь и здесь для примеров людей, пишущих их собственное.

Действительно, действительно ужасный способ сделать это должно было бы отредактировать администраторский интерфейс так, чтобы после нажатия на "Save" Вы были перенаправлены Вам фильтрованный URL. Я не рекомендовал бы это вообще, но это - опция.

Другой довольно простой способ сделать это должно было бы записать универсальное представление, чтобы показать Ваши фильтруемые объекты, затем использовать формы Django для редактирования объектов оттуда. Я взглянул бы на это, Вы будете ошеломлены, как мало кода необходимо записать для получения простого движения страницы представления/редактирования.

3
ответ дан 14 December 2019 в 13:51
поделиться

Нажать 2 раза "Назад"?

2
ответ дан 14 December 2019 в 13:51
поделиться

Для этого есть простой прием, но это не общее решение и требует модификации каждого ModelAdmin , который вы хотите поддерживать. Может быть, есть общий способ сделать это, но я не тратил время на то, чтобы решить его на общем уровне.

Первым шагом является создание пользовательского FilterSpec для фильтра (ссылки, которые помогут см. В сообщении Харли), который сохраняет выбранное значение фильтра в сеансе (и удаляет его, когда он больше не нужен).

# in cust_admin/filterspecs.py
from django.contrib.admin.filterspecs import FilterSpec, ChoicesFilterSpec

class MyFilterSpec(ChoicesFilterSpec):

    def __init__(self, f, request, params, model, model_admin):
        super(MyFilterSpec, self).__init__(f, request, params, model,
                                           model_admin)
        if self.lookup_val is not None:
            request.session[self.lookup_kwarg] = self.lookup_val
        elif self.lookup_kwarg in request.session:
            del(request.session[self.lookup_kwarg])

# Register the filter with a test function which will apply it to any field
# with a my_filter attribute equal to True
FilterSpec.filter_specs.insert(0, (lambda f: getattr(f, 'my_filter', False),
                               MyFilterSpec))

Вы должны импортировать модуль, в котором он находится, например, ваш urls.py :

# in urls.py
from cust_admin import filterspecs

Установите свойство в поле, к которому вы хотите применить фильтр:

# in models.py
class MyModel(models.Model):
    my_field = Models.IntegerField(choices=MY_CHOICES)
    my_field.my_filter = True

В пользовательском ModelAdmin , переопределите метод change_view , так что после того, как пользователь щелкнет save , они будут возвращены в представление списка со значением поля фильтра, добавленным к URL-адресу.

class MyModelAdmin(admin.ModelAdmin):
    def change_view(self, request, object_id, extra_context=None):
        result = super(MyModelAdmin, self).change_view(request, object_id,
                                                       extra_context)
        if '_save' in request.POST:
            if 'my_field__exact' in request.session:
                result['Location'] = '/admin/myapp/mymodel/?my_field__exact=%s' \
                                     % request.session['my_field__exact']
        return result
1
ответ дан 14 December 2019 в 13:51
поделиться

Другой способ сделать это - встроить фильтр в набор запросов.

Вы можете динамически создать прокси-модель с помощью менеджера, который фильтрует так, как вы хотите, а затем вызвать admin.site.register () для создания нового администратора модели. Тогда все ссылки будут относиться к этому виду.

0
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: