Настройте страницу списка изменений администратора Django - PullRequest
0 голосов
/ 05 марта 2012

На странице списка изменений модели django-admin я также хочу взаимодействовать с другими моделями. Я имею в виду,

У меня есть три модели

  1.Keywords

        contains name field

  2.Category
        contains category_name field

  3.Keyword Category Relation
        Category is ForeignKey and Keyword is Many to many field

В моем ключевом слове модель changelist.htmlстраница, которую мне нужно настроить, изменения будут

There should be a dropdown box which lists all category model objects

Если я выберу некоторые ключевые слова, а также выберу определенную категорию из выпадающего списка, при нажатии кнопки сохранения Ключевые слова и категории должны быть обновлены в другоймодель

Как это должно продолжаться?Как это предполагается сделать?предложи мне

1 Ответ

0 голосов
/ 06 марта 2012

Вы можете переопределить функции save_model и save_formset.Примеры случаев из моего собственного кода (admin.py):

class SubtaskAdmin(admin.ModelAdmin):
    form = SubtaskAdminForm
    list_display = ('id', 'task', 'date_created', 'author', 'status', 'is_reclamation')
    list_filter = ('date_created', 'status', 'is_reclamation')
    actions = [change_subtask_status_to_new, change_subtask_status_to_open, change_subtask_status_to_ready]
    fields = ('order', 'task', 'tags', 'amount', 'is_reclamation', 'status')

    def save_model(self, request, obj, form, change):
        if not change:
            employee = Employee.objects.get(id=request.user.id)
            obj.author = employee
        obj.save()
        super(SubtaskAdmin, self).save_model(request, obj, form, change)

...

class MaintenanceOrderLineAdmin(admin.ModelAdmin):
        ...
        def save_formset(self, request, form, formset, change):
                instances = formset.save(commit=False)
                employee = get_object_or_404(Employee, id=request.user.id)
                for instance in instances:
                    if isinstance(instance, Subtask): 
                        instance.author = employee
                        instance.save()
...