2009-05-26 9 views
0

Ich habe eine Inline namens Fooinline gemacht. Diese Inline funktionierte gut in Django 1.02, aber sobald ich 1.1 Django aktualisiert begann es einen Fehler geben:Django Inline-Ausgabe

**TypeError at /admin/casd/aaas/4028cb901dd9720a011deadd85e8007f/ 
__init__() got an unexpected keyword argument 'request'** 

Mein Fooinline Code ist:

class FooInline(InlineModelAdmin): 

template = 'admin/edit_inline/tabular2.html' 

def formfield_for_dbfield(self,db_field, **kwargs): 
# if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)): 
#  BaseModelAdmin.formfield_for_dbfield(self, db_field, **kwargs) 
# else: 
    kwargs['widget'] = FlatTextWidget 
    return db_field.formfield(**kwargs) 

Und mein FlatTextWidget ist

class FlatTextWidget(HiddenInput): 
def __init__(self, attrs=None): 
    if attrs is not None: 
     self.attrs = attrs.copy() 
     super(Widget, self).__init__(attrs) 
    else: 
     self.attrs = {} 
     super(Widget, self).__init__() 

def render(self, name, value, attrs=None): 
    real_field = super(HiddenInput, self).render(name, value, attrs) 
    x = value 
    if x is None: 
     x = '' 
    return mark_safe('%s%s' % (real_field, x)) 

def _has_changed(self, initial, data): 
    return False 

Ich rufe meine Fooinline als

class XYZInline(Fooinline): 
    model=XYZ 

Antwort

2

Der Fehler in Ihrem formfield_for_dbfield ist, sollte es lesen:

def formfield_for_dbfield(self, db_field, **kwargs): 
    kwargs['widget'] = FlatTextWidget 
    return super(FooInline, self).formfield_for_dbfield(db_field,**kwargs) 

an der ursprünglichen Funktion Werfen Sie einen Blick in contrib/admin/options.py#L71

Verwandte Themen