我是Django / Python中的新手 我已经开始实施管理表单并尝试个性化行为
我想在特定的change_form(并非所有变更表)上添加一个链接,该链接将打开一个新窗口,允许用户在不离开第一个变更表的情况下以另一个change_form输入数据
这2个表格对应于链接的2个模型(相关表格)
是否可以使用管理表单?
编辑 我认为这篇文章可能是一个解决方案 Django Admin nested inline 我将尝试实施此解决方案,但仍欢迎您对此解决方案进行解释或提出建议...
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)