Динамическая фильтрация по 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, основанное на выборе пользователя.