【问题标题】:choices value of select in an inline form in admin django在 admin django 中的内联表单中选择的选择值
【发布时间】:2021-01-28 13:47:34
【问题描述】:

请我想按 Program_de_bourse 选择周期列表,知道在我的实际形式中我可以选择所有周期,但我只想选择链接到 Program_de_bourse 的周期我的外键 Program_de_bourse = id of Program_de_bourse 模型.py

 class Cycle(models.Model):
   Programme_de_bourse = models.ForeignKey(Programme_de_bourse, on_delete=models.SET_NULL, null=True)
   Objet_programme = models.CharField(
        max_length=30,
        choices=objet_CHOICES, verbose_name='Cycle'
    )
   def __str__(self):
     return self.Objet_programme

..

class Discipline(models.Model):
  Discipline = models.ForeignKey(Disc, on_delete=models.CASCADE, related_name='Discipline_cycle')
  Cycle = models.ForeignKey(Cycle, on_delete=models.SET_NULL, null=True)
  Programme_de_bourse = models.ForeignKey(Programme_de_bourse, on_delete=models.SET_NULL, null=True, 
  related_name='Programme_de_bourse_id')


  def __str__(self):
    return str(self.Discipline)

我的管理员.py

 class Programme_de_bourseAdmin(ExportActionMixin, admin.ModelAdmin):
    fieldsets =  [
    ('Programme',               {'fields': ['Programme']}),
    #'classes': ['collapse']
       #
   ]

   list_display = ["Programme",]

   inlines = [CycleInline, DisciplineInline, ConditionInline, EtablissementInline, DocumentInline]


 class DisciplineInline(ExportActionMixin, admin.TabularInline):
 )
    model = Discipline

enter image description here

【问题讨论】:

  • 你可以为 DisciplineInline 类创建一个表单并在那里添加一个过滤器

标签: python django django-models django-forms django-admin


【解决方案1】:

试试这个

您可以为 DisciplineInline 类创建一个表单并在那里添加一个过滤器

这可能适用于一些更改

class DisciplineForm(forms.ModelForm):
     Programme_de_bourse = forms.ModelChoiceField(queryset='....') # your filter 
     class Meta:
        model = Discipline
       fields = ('....')

class DisciplineInline(ExportActionMixin, admin.TabularInline):
 
    model = Discipline
    form = DisciplineForm

【讨论】:

  • 我是 Django 的新手,我测试了您的解决方案,但它对我不起作用,这是我的代码循环 = forms.ModelChoiceField(queryset=Cycle.objects.filter(Programme_de_bourse = 7 ) ) 类 Meta: 模型 = 学科字段 = ('cycle','Discipline') '
【解决方案2】:

这对我来说是通过 Program_de_bourse_id = 7 获得循环的工作,现在我想用 Program_de_bourse 的真实 ID 替换 7,那么如何从我的函数 Program_de_bourseAdminrer 获取 Program_de_bourse 的 ID

class DisciplineForm(forms.ModelForm):
cycle = forms.ModelChoiceField(queryset=Cycle.objects.filter(Programme_de_bourse=7)) 
class Meta:
    model = Discipline
    fields = ('cycle','Discipline')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 2018-06-30
    • 2014-02-05
    • 2010-10-15
    • 2019-04-29
    • 2011-08-27
    • 2010-11-28
    • 2019-11-02
    相关资源
    最近更新 更多