Как применить автозаполнение во многих местах в Django - PullRequest
0 голосов
/ 17 декабря 2018

Я хотел бы применить параметр автозаполнения для моей модели Preorder.preorder_has_products.through , чтобы иметь возможность загружать продукты с автозаполнением (я пытался безуспешно). Кроме того, у меня есть встроенная реализация в порядкеиметь возможность выбрать для одного предварительного заказа более одного продукта.Препятствие заключается в том, что у меня есть множество полей (preorder_has_products), как вы можете видеть ниже, и я не знаю, как реализовать автозаполнение.

models.py

class Preorder(models.Model):
    client = models.ForeignKey(Client,verbose_name=u'Πελάτης')
    preorder_date = models.DateField("Ημ/νία Προπαραγγελίας",null=True, blank=True, default=datetime.date.today)
    notes = models.CharField(max_length=100, null=True, blank=True, verbose_name="Σημειώσεις")
    preorder_has_products=models.ManyToManyField(Product,blank=True)

    def get_absolute_url(self):
        return reverse('preorder_edit', kwargs={'pk': self.pk})

class Product(models.Model):
    name = models.CharField("Όνομα",max_length=200)
    price = models.DecimalField("Τιμή", max_digits=7, decimal_places=2, default=0)
    barcode = models.CharField(max_length=16, blank=True, default="")
    eopyy = models.CharField("Κωδικός ΕΟΠΥΥ",max_length=10, blank=True, default="")
    fpa = models.ForeignKey(FPA, null=True, blank=True, verbose_name=u'Κλίμακα ΦΠΑ')

forms.py

class PreorderHasProductsForm(ModelForm):
    product = ModelChoiceField(required=True,queryset=Product.objects.all(),widget=autocomplete.ModelSelect2(url='name-autocomplete'))

    class Meta:
        model=Preorder.preorder_has_products.through
        exclude=('client',)


    def __init__(self, *args, **kwargs):
        super(PreorderHasProductsForm, self).__init__(*args, **kwargs)
        self.fields['product'].label = "Ονομα Προϊόντος"

PreorderProductFormSet = inlineformset_factory(Preorder,Preorder.preorder_has_products.through,form=PreorderHasProductsForm,extra=1)

my views.py для автозаполнения

class NameAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        # Don't forget to filter out results depending on the visitor !
        if not self.request.user.is_authenticated():
            return Product.objects.none()

        qs = Product.objects.all()

        if self.q:
            qs = qs.filter(product__istartswith=self.q)

        return qs

мой шаблон написан на основе этого урока: https://django -autocomplete-light.readthedocs.io / en / master/tutorial.html

и, наконец, мой URL для автозаполнения:

url(r'^name-autocomplete/$',views.NameAutocomplete.as_view(),name='name-autocomplete'),

Мой результат, основанный на приведенных выше фрагментах, показан на прилагаемом изображении.

enter image description here

что может быть не так?Я предполагаю, что одной из возможных проблем может быть ссылка на таблицу manytomanyfield.Есть идеи?

...