限制Django管理员中的foreignkey的字段选择

时间:2019-06-03 11:21:45

标签: django django-admin

我有4个简单的模型:

model.py

class State(models.Model):
    name = models.CharField(max_length=20)

class County(models.Model):
    name = models.CharField(max_length=30)
    state = models.ForeignKey(State, on_delete=models.CASCADE)

class District(models.Model):
    name = models.CharField(max_length=30,null=True, blank=True)
    county = models.ForeignKey(County,on_delete=models.CASCADE, null=True, blank=True)

class Teacher(model.Model):
    name = models.CharField(max_length=20)
    state = models.ForeignKey(State, on_delete=models.CASCADE)
    county = models.ForeignKey(County,on_delete=models.CASCADE, null=True, blank=True)
    district = models.ForeignKey(District,on_delete=models.CASCADE, null=True, blank=True)

admin.py:

@admin.register(Teacher)
class TeacherAdmin(admin.ModelAdmin):
    list_display = ['name','state','county','district']

我的问题在Teachercounty字段的district管理页面中,所有县和县在下拉选择框中显示。我想要的只是教师状态显示的县和地区。谢谢

1 个答案:

答案 0 :(得分:0)

选择这些字段的默认值可以使您在管理页面中更改该字段。无论如何,如果您只想拥有该值,则可以在下面的代码中使用。

将以下代码添加到models.py文件中的模型类中:

def state_value(self):
  return ("%s" % (self.state.name))

您的admin.py文件如下:

@admin.register(Teacher)
class TeacherAdmin(admin.ModelAdmin):
  list_display = ['name','state_value']

您也可以对其他字段重复此过程。