Перенаправить из одного вида администратора в другой вид модели в Django - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь найти способ открыть другое представление администратора для выбора столбца.

Вот мои очень упрощенные модели:

class modelA(models.Model):
     created = models.DateTimeField(auto_now_add=True)
     description = models.CharField(max_lenght=200)

class modelB(models.Model):
     modelsA = models.ForeignKey(on_delete=models.CASCADE, related_name='modelBs')
     value = models.IntegerField()

И в окне администратора у меня есть следующее представление:

class modelA_Admin(admin.ModelAdmin):
     list_view = ('__str__', 'total_modelBs')

     def total_modelBs(self, obj):
         try:
              total = obj.modelBs.all().count()
         except modelB.DoesNotExist:
              total = 0
      return total

То, что я хотел бы получить, - это возможность открыть modelB представление администратора со значениями, отфильтрованными для тех, которые дали modelA идентификатор, как только я нажму на значение total_modelBs.

Есть идеи, как этого достичь?

1 Ответ

0 голосов
/ 23 апреля 2020

Как оказалось, решение было довольно простым. В принципе, что-то вроде этого должно работать:

class modelA_Admin(admin.ModelAdmin):
     list_view = ('__str__', 'total_modelBs')

     def total_modelBs(self, obj):
         try:
              total = obj.modelBs.all().count()
         except modelB.DoesNotExist:
              total = 0
         link = reverse("admin:MyApp_modelb_changelist")
         return format_html('<a href="{}">{}</a>',mark_safe(link), total)
      total_modelBs.short_description = 'modelBs total'

Я показал здесь, как установить перенаправление для списка изменений, все опции можно найти в документации .

...