I want to extend ForeignKeyRawIdWidget so I want to be able to use it without setting raw_id_fields.

With the follwoing I don't get an error but I see no effect:

class Product(models.Model):

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

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

This gives me an error: init() takes at least 2 non-keyword arguments (1 given)

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

How do I do that?


Was it helpful?

Solution 2

Using ManyToManyRawIdWidget instead of ForeignKeyRawIdWidget fixed it for me.


You forgot to pass the related Model-QuerySet to ModelMultipleChoiceField.

products = forms.ModelMultipleChoiceField(Product.objects, widget=ForeignKeyRawIdWidget(GroupProduct._meta.get_field('products').rel))
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow