Администратор Django, как запретить пользователю вставлять записи только в своей стране?

у меня есть эта модель

  title= country = models.CharField(max_length=25)
  country = models.ForeignKey(Country)
  city = models.ForeignKey(City)
  user = country = models.ForeignKey(User)

Используя страницу (Добавить дело +) в администраторе Django по умолчанию, можно ли настроить параметры раскрывающихся списков страны и города в зависимости от текущего пользователя?
Например: если текущий вошедший в систему пользователь из США, то в раскрывающемся списке стран будет показан только один вариант (США), а в раскрывающемся списке городов будут показаны только города в США. Тогда этому пользователю будет разрешено только для добавления дел, связанных с его/ее страной.


person Med    schedule 14.04.2020    source источник
comment
Не имеет отношения, но эта строка user = country = models.ForeignKey(User) переопределяет поле модели country.   -  person bruno desthuilliers    schedule 14.04.2020


Ответы (1)


Отвечая на ваш вопрос: да, конечно, это возможно - ЕСЛИ вы, конечно, знаете, к какой стране принадлежит ваш пользователь.

Вы должны будете

1/ исключить поле country из форма,

2/ используйте formfield_for_foreignkey() для фильтрации набора запросов поля city

3/ и вручную заполните поле модели в save_model() метод

Обратите внимание, что простое чтение документа modeladmin могло бы ответить на ваш вопрос - есть примеры для очень похожих вариантов использования.

person bruno desthuilliers    schedule 14.04.2020