Вопрос

Я хочу расширить ForeignKeyRawIdWidget, поэтому я хочу иметь возможность использовать его без установки raw_id_fields.

При выполнении следующего действия я не получаю ошибку, но я не вижу никакого эффекта:

# models.py
class Product(models.Model):
    ...

class GroupProduct(Product):
    ...
    products = models.ManyToManyField(Product, related_name="%(class)s_related")

# forms.py
class GroupProductAdminForm(forms.ModelForm):    
    class Meta:
        model = GroupProduct
        widgets = {
            'products': ForeignKeyRawIdWidget(GroupProduct._meta.get_field('products').rel),
        }

Это выдает мне ошибку: инициализация() принимает по крайней мере 2 аргумента, не являющихся ключевыми словами (1 задан)

products = forms.ModelMultipleChoiceField(widget=ForeignKeyRawIdWidget(GroupProduct._meta.get_field('products').rel))

Как мне это сделать?

Спасибо

Это было полезно?

Решение 2

Использование ManyToManyRawIdWidget вместо ForeignKeyRawIdWidget исправило это для меня.

Другие советы

Вы забыли передать связанный набор запросов модели в ModelMultipleChoiceField.

products = forms.ModelMultipleChoiceField(Product.objects, widget=ForeignKeyRawIdWidget(GroupProduct._meta.get_field('products').rel))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top