ограничить выбор полей Foreignkey в администраторе Django - PullRequest
1 голос
/ 03 июня 2019

У меня 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']

Моя проблема находится на Teacher странице администратора для поля county и district. Все округа и округа отображаются в выпадающем списке. то, что я хочу, - это просто графство и округ штата. спасибо

1 Ответ

0 голосов
/ 03 июня 2019

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

Добавьте приведенный ниже код в класс вашей модели вmodels.py file:

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

И ваш admin.py файл будет выглядеть так:

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

И вы можете повторить этот процесс и для других полей.

...