2016-02-01 3 views
2

У меня есть следующие модели в Django, и с помощью смарт-выбирает:Как ограничить ForeignKey поля в другую модели FK в зависимости от значения

class Country(models.Model): 
    name = models.CharField(max_length=100) 

class Province(models.Model): 
    name = models.CharField(max_length=100) 
    country = models.ForeignKey(Country) 

class City(models.Model): 
    name = models.CharField(max_length=100) 
    country = models.ForeignKey(Country) 
    province = models.ForeignKey(Province) 

В светильниках, я добавил несколько стран, со своими провинциями, и города.

Я использую smart-selects для построения цепочки в этой модели

class WorkArea(models.Model): 
    work_area = models.CharField(max_length=100) 
    country = models.ForeignKey(Country) 
    province = ChainedForeignKey(Province, chained_field="country",chained_model_field="country") 
    city = ChainedForeignKey(City, chained_field=province", chained_model_field="province") 

Теперь у меня есть эта модель:

class Project(models.Model): 
    project_name = models.CharField(max_length=100) 
    province = models.ForeignKey(Province) 

Вопрос: В модели Project как я показывать только провинции образуют Province модель , который имеет country установлен на X (Если у меня есть страны «США» и «Канада», я хочу поле province, чтобы показать список провинций в «США» только с выбранной страной выбора).

+0

Я полагаю, вы хотите, чтобы с Javascript, так что, когда пользователь выбирает одну страну, всю провинцию этой страны автоматически в списке? – Ramast

+0

Нет, в модели 'Project' на поле' province' я хочу, чтобы он показывал только список провинций США. как вы можете видеть в модели «WorkArea», я уже реализовал плагин smart-selects, и он отлично работает. моя проблема в модели «Проект», что я не хочу, чтобы пользователь выбирал страну, она должна быть предварительно выбрана как «США» или pk = x, поэтому в этой модели не будет поля «страна» , –

+0

Я раньше не использовал этот пакет, спасибо за обмен. У меня есть upvoted и посмотрел на ваш вопрос, надеюсь, кто-то другой может помочь – Ramast

ответ

0

Это решение с использованием limit_choices_to

class Project(models.Model): 
    project_name = models.CharField(max_length=100) 
    province = models.ForeignKey(Province, limit_choices_to={"country": 1})