2010-02-26 2 views
3

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

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

# 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)) 

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

Благодаря

ответ

0

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

1

Вы забыли передать связанную Model-QuerySet в ModelMultipleChoiceField.

products = forms.ModelMultipleChoiceField(Product.objects, widget=ForeignKeyRawIdWidget(GroupProduct._meta.get_field('products').rel)) 
+0

Отсутствующие объекты были опечаткой. Мне пришлось использовать ManyToManyRawIdWidget вместо ForeignKeyRawIdWidget – pablo

Смежные вопросы