У меня есть Chart
и модели модулей (см. Код ниже).Каждый график принадлежит модулю (через ForeignKey
).Диаграмма может иметь другую диаграмму как parent
(другую ForeignKey
).В админе мне бы хотелось, чтобы выпадающий список parent
на конкретном графике включал только графики в том же модуле .
Я ищу решение Python, а не AJAX,Это означает, что при создании новой диаграммы раскрывающийся список должен быть пустым (без экземпляра модели, если модуль не выбран) и что изменение модуля в администраторе не обновит параметры parent
, чтобы они соответствовали, пока модель не будет сохранена.Я согласен с этим.
Существует множество похожих вопросов (и ответов), которые, как выясняется, фильтруют параметры в соответствии с user ;ModelAdmin.formfield_for_foreignkey
получает запрос в качестве аргумента, так что вы можете использовать request.user
, но ему не предоставляется экземпляр модели для игры.(Я использую Django 1.3.)
Мои модели (конечно, очень упрощенные):
class Module(models.Model):
pass
class Chart(models.Model):
module = models.ForeignKey(Module)
parent = models.ForeignKey(Chart, blank=True, null=True)
class ChartAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
# I would like to do this, but have no "instance":
kwargs['queryset'] = Chart.objects.filter(module=instance.module)
return super(ChartAdmin, self).formfield_for_foreignkey(self, db_field, request, **kwargs)
admin.site.register(Chart, ChartAdmin)