Динамическая фильтрация по FK в Django Admin

У меня есть одна модель продукта с ценой FK, поскольку один продукт может содержать несколько цен. Но я также хочу иметь возможность выбрать, какая из этих многих цен должна быть фактической ценой, поэтому для этого у меня есть и цена (в модели продукта), и продукт (в модели цены). Рассмотрим следующие модели:

class Product(models.Model):
name = models.CharField()
price     = models.ForeignKey('Price', blank=True, null=True, related_name='Product')

class Price(models.Model):
amount = models.IntegerField()
product = models.ForeignKey('Product', related_name='product')

Это работает нормально, хотя у меня проблемы с фильтрацией цен в выпадающем меню. Это дает мне все цены, а не только цены, которые относятся к этому продукту. Пытался

limit_choices_to 

но это не похоже на работу с динамическими значениями.

Я также сталкивался с этим патчем: http://code.djangoproject.com/ticket/2445

Не уверен, что лучшее решение будет здесь. Был бы признателен за некоторые указатели, спасибо!

1 ответ

Вы могли бы сделать:

Цены = Price.object_set_all (продукт = "ваш продукт")

Я оставил тег "ваш продукт", потому что не помню, сработает ли self в этой ситуации. Однако я думаю, что это может быть правильным подходом.

Вы не должны иметь ForeignKey, появляющийся в обеих моделях, он вам нужен только в Price. Затем ваша модель продукта может иметь поле с именем current_price, основанное на выборе пользователя.

Другие вопросы по тегам