Я хочу изменить виджет формы, зависит от другого значения поля. По умолчанию выбирается, потому что поле модели является внешним ключом. Мои модели заключаются в следующем:Django admin inline изменение поля выбора для charfield динамически
class ProductFeatureValue(BaseName):
feature = models.ForeignKey('ProductTypeFeature')
class Meta:
verbose_name = _(u'Product Feature Value')
verbose_name_plural = _(u'Product Feature Values')
class ProductFeature(models.Model):
product = models.ForeignKey('Product')
feature = models.ForeignKey('ProductTypeFeature')
value = models.ForeignKey('ProductFeatureValue')
И моя форма выглядит следующим образом:
class ProductFeatureFormForInline(ModelForm):
class Meta:
model = ProductFeature
def __init__(self,*args,**kwargs):
super(ProductFeatureFormForInline,self).__init__(*args,**kwargs)
if isinstance(self.instance,ProductFeature):
try:
widget_type = self.instance.feature.product_type.producttypefeature_set.all()[0].widget #TODO Fix that 0 slice
if widget_type == u'TEXT':
self.fields['value'] = CharField(widget=TextInput())
if widget_type == u'MULTIPLE_SELECT':
self.fields['value'].widget = MultipleChoiceField()
except:
pass
Он изменяет поля виджета, но когда это делает его CharField и заполнить его с экземпляром он показывает идентификатор модели а не значение (автор: 1), и имеет смысл показать его таким образом, но я хочу показать (автор: Дэн Браун). Я попытался с начальными значениями, но не работал. Любые советы по этому поводу будут высоко оценены. Спасибо