2012-01-06 30 views
7

Tôi có một hình thức trong Django trông như thế nàyDjango dạng: tên 'tự' không được định nghĩa

class FooForm(forms.ModelForm): 
    foo_field = forms.ModelChoiceField(widget=FooWidget(def_arg=self.data)) 

Nơi tôi gọi self.data, Python ném ngoại lệ name 'self' is not defined. Tôi có thể truy cập self ở đó bằng cách nào?

Trả lời

7

Khi người khác trả lời, không có self để tham chiếu tại thời điểm đó. Một cái gì đó như thế này không làm việc mặc dù:

class FooForm(forms.ModelForm): 
    foo_field = forms.ModelChoiceField() 

    def __init__(self, *args, **kwargs): 
     super(FooForm, self).__init__(*args, **kwargs) 
     self.fields['foo_field'].initial = self.data 

Bạn cũng có thể truy cập các widget trong __init__ qua self.fields['foo_field'].widget

2

Bạn không thể; không có self ở đó. Bạn sẽ cần phải thực hiện thiết lập bổ sung trong __init__().

5

bạn không thể

tại thời điểm tạo lớp, không có trường hợp đối tượng. đối với loại hành vi động này, bạn cần ghi đè phương thức __init__ và tạo trường (hoặc thay đổi một số tham số của nó) tại đó

Các vấn đề liên quan