Пользовательская модель django-autocomplete-light django 1.8 для администратора

Я хочу добавить автозаполнение для поля OneToOne в django-admin

class Banner(models.Model):
    product = models.OneToOneField(Product, null=True)

class BannerAdmin(admin.ModelAdmin):
    form = BannerForm

застрял на https://django-autocomplete-light.readthedocs.org/en/stable-2.xx/tutorial.html?highlight=tutorial#tutorial - что-либо изменилось после всех следующих шагов (тот же виджет списка для ' продукт' ...):

Что я наделал:

  1. установлено: D
  2. добавлен "autocomplete_light" в INSTALLED_APPS
  3. переопределенный admin / base_site.html (с использованием пользовательского загрузчика)
  4. url (r '^ autocomplete /', include ('autocomplete_light.urls')) в шаблоны URL
  5. autocomplete_light_registry.py с моделью Banner и search_fields = ['product'],
  6. обновленная форма модели:
class BannerForm(autocomplete_light.ModelForm):
    class Meta:
        model = Banner
        fields = ['product', 'priority', 'image']
        autocomplete_fields = ['product']

Что я пропустил?


person madzohan    schedule 10.06.2015    source источник
comment
Просто угадайте, может быть проблема с этим fields = ['product', 'priority', 'image'], попробуйте удалить его и проверьте.   -  person chandu    schedule 10.06.2015
comment
@chandu nope ImproperlyConfigured Создание ModelForm без атрибута 'fields' или 'exclude' запрещено.   -  person madzohan    schedule 10.06.2015


Ответы (1)


После решения моей проблемы:

  1. перед администратором в INSTALLED_APPS
  INSTALLED_APPS = (
    'autocomplete_light',
    'django.contrib.admin',
  )
  1. autocomplete_light_registry.py
class BannerAutocomplete(autocomplete_light.AutocompleteModelBase):
    model = Banner
    search_fields = ('name',)  # banner_obj.product.name
    choices = Product.objects.all()
    limit_choices = 20

    autocomplete_light.register(
        BannerAutocomplete,
        attrs={
            'placeholder': _(u'имя товара'),
            'data-autocomplete-minimum-characters': 1,
        },
    )
  1. Вручную выберите автозаполнение для связанного поля в вашей форме:
class BannerForm(autocomplete_light.ModelForm):
    class Meta:
        model = Banner
        fields = ['product', 'priority', 'image']
        autocomplete_names = {'product': 'BannerAutocomplete'}
person madzohan    schedule 11.06.2015