Django - Admin - Добавить ссылку в change_form, которая перенаправляет на другую change_form - PullRequest
1 голос
/ 09 октября 2019

Я новичок в Django / Python. Я начал реализовывать административные формы и пытаться персонализировать поведение

Я хотел бы добавить ссылку на конкретную форму change_form (не все формы изменений), которая откроет новуюокна, которые позволяют пользователю вводить данные в другую форму change_form, не выходя из первой формы изменения

2 формы соответствуют 2 связанным моделям (связанные таблицы)

возможно ли это с формами администратора?

РЕДАКТИРОВАТЬ Я думаю, что этот пост может быть решением Django Admin вложенный Я постараюсь реализовать это решение, но объяснение этого решения или советы все еще приветствуются ...

EDIT2

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

РЕДАКТИРОВАТЬ 3

я говорю один ... на самом деле, это был self.ide, а не self.id, потому что я указал свой первичный ключ в своем классе ...

from django.db import models
from django.urls import reverse
from django.utils.safestring import mark_safe


class Visite(models.Model):
    vis_ide = models.AutoField(primary_key=True)
    vis_dat = models.DateField("Date de consultation")

class BilanBiologique(models.Model):
    bio_ide = models.AutoField(primary_key=True)
    vis = models.ForeignKey(Visite, verbose_name='Visite', on_delete=models.CASCADE)
    bio_dat = models.DateField("Date de prélèvement")

    def link(self):
        if self.id:
            changeform_url = reverse('admin:ecrf_bilanbiologique_change', args=(self.id,))
            return mark_safe('<a href="{u}" target="_blank">Details</a>'.format(u=changeform_url))
        return ''
    link.allow_tags = True

class ExamenBiologique(models.Model):
    bio_exa_ide = models.AutoField(primary_key=True)
    bio = models.ForeignKey(BilanBiologique, verbose_name='Bilans', related_name='examens',on_delete=models.CASCADE)
    bio_exa_cod = models.IntegerField("Type d'examen")
    bio_exa_res_num = models.FloatField("Résultat numérique", null=True, blank=True)
    bio_exa_res_mod = models.IntegerField("Résultat modalité", null=True, blank=True)
    bio_exa_uni = models.IntegerField("Unité")
    bio_exa_val_inf = models.FloatField("Limite inférieure", null=True, blank=True)
    bio_exa_val_sup = models.FloatField("Limite supérieure", null=True, blank=True)

from django.contrib import admin
from .models import Visite, Inclusion, BilanBiologique, ExamenBiologique

class ExamenBiologiqueInline(admin.StackedInline):
    model = ExamenBiologique

class BilanBiologiqueAdmin(admin.ModelAdmin):
    inlines = [ExamenBiologiqueInline,]

class BilanBiologiqueLinkInline(admin.TabularInline):
    model = BilanBiologique
    fields = ('bio_ide', 'vis', 'bio_dat', 'link')
    readonly_fields = ('link', )

class VisiteAdmin(admin.ModelAdmin):
    inlines = [BilanBiologiqueLinkInline,]


admin.site.register(Visite, VisiteAdmin)
admin.site.register(BilanBiologique, BilanBiologiqueAdmin)

введите описание изображенияИон здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...