在两个管理面板模型中显示和编辑M2M文件管理器(django-select2)

时间:2018-02-13 13:18:54

标签: django python-3.x jquery-select2

当我将他设置为自定义字段时,我对ModelSelect2MultipleWidget有一些问题。

models.py

class Product(GenerateUniuqSlugMixin, BaseAbstractModel):
    name = models.CharField(
        verbose_name='Имя',
        max_length=255
    )
    slug = models.SlugField(
        verbose_name='Url',
        max_length=100
    )
    description = models.TextField(
        verbose_name='Описание',
        blank=True
    )
    price = models.ManyToManyField(
        'Price',
        verbose_name='Цена',
        blank=True,
        related_name='products'
    )

class Price(BaseAbstractModel):
    code = models.CharField(
        verbose_name='Уникальный Код',
        max_length=100,
        unique=True,
        db_index=True
    )
    price = models.DecimalField(
        verbose_name='Цена',
        max_digits=16,
        decimal_places=2
    )
    creation_date = models.DateField(
        verbose_name='Дата добавления',
        auto_now_add=True
    )
    update_date = models.DateField(
        verbose_name='Дата обновления',
        auto_now=True
    )

我希望有机会搜索和连接价格管理面板中的产品。我在下一个代码中添加了表单:

class PriceAdminForm(forms.ModelForm):
    products = forms.ModelMultipleChoiceField(
        queryset=Product.objects.all(),
        widget=ModelSelect2MultipleWidget(
            model=Product,
            queryset=Product.objects.all(),
            search_fields=['name__icontains'],
            attrs={'data-placeholder': 'Поиск в товарах', 'data-width': '50em'}
        ),
        required=False
    )
    class Meta:
        model = Price
        fields = (
            'code',
            'name',
            'price',
            'products',
        )

但是它没有工作,我不知道为什么,我的错误在哪里?如果我从widget attr中删除ModelSelect2MultipleWidget,我会看到默认选择字段,但他不记得我的保存选择,他只显示所有查询集。如果我能看到提供ModelSelect2MultipleWidget的输入字段会很棒。 感谢' S

我的环境: Django的== 2.0.2 Django的SELECT2 == 6.0.1

0 个答案:

没有答案