Django python中的自定义管理下拉菜单

时间:2017-09-25 12:49:58

标签: python django django-models django-admin

我只是python的初学者。我创建了两个名为child和parent的管理服务。

父级 - 表

id

名称

儿童 - 表

PID

CNAME

在两个服务列中,“type”将显示在下拉列表中。 为父项创建条目时,如果未在父服务中选择“类型”。 那个未选择的父ID应该显示在子服务的下拉列表中 抱歉我的英文不好

# models.py

class Parent(models.Model):

    id = models.IntegerField(blank=False)

    type = models.ForeignKey(
        'self',
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        related_name='parent_set')
   name = models.CharField(max_length=20)


class Child(models.Model):

    pid = models.IntegerField(max_length=30, blank=False)
    Type = models.ForeignKey(
         Parent,
         null=True, 
         on_delete=models.CASCADE, 
         related_name='child_set' )
    pname = models.CharField(max_length=20)

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

尚未对此进行测试。请检查一下是否有效。

class ChildAdmin(admin.ModelAdmin):
    def render_change_form(self, request, context, *args, **kwargs):
         chosen_types = Parent.objects.all().values_list('type', flat=True)
         context['adminform'].form.fields['Type'].queryset = Parent.objects.all().exclude(pk__in=chosen_types)
         return super(ChildAdmin, self).render_change_form(request, context, args, kwargs)