2011-11-30 23 views
8
cleaned_data

yılında bu form var Firebug’e göre, değer gönderiyor, bu sadece benim temiz fonksiyonuma getiriyor gibi görünmüyor. Yanlış mı yapıyorum?Gizli alan değildir

DÜZENLEME: Mesaj verileri

canvas 1 
csrfmiddlewaretoken 2cb73be791b32ca9a41566082c804312 
user username 

EDIT2: Ayrıca nasıl birincil anahtardır clean_user fonksiyonu için birincil anahtar göndermek için bana söyler misiniz bir cevap almaya istekli olacağını/1/Yukarıdaki örnek URL'de. denir görünümünde fonksiyonudur:

def canvas_add_collaborator(request, pk): 

yüzden gizli bir alan ihtiyacı vermeyerek sorunumu çözecek clean_user işlevine pk göndermek isteyecektir.

+0

oluşturan test ettik? EDIT2 hakkında –

+0

. Pk clean_user işlevine geçebilirsiniz. 'clean_user (self, pk)' –

cevap

9

Sen değil clean_user()) (temizlemek için yöntem adını değiştirmek gerekir. Eğer kullanıcı alanını doğrularsanız 'canvas' clean_data içinde değildir.

class CollaboratorForm(forms.Form): 
    .... 
    def __init__(self, *args, **kwargs): 
     self.request = kwargs.pop('canvas', None) 
     super(CollaboratorForm, self).__init__(*args, **kwargs) 
Bence Sonra

:

def canvas_add_collaborator(request, pk): 
    .... 
    form.canvas = pk 

Belki en zarif çözümü, ama işe yarıyor bu kullanarak benim sorun çözüldü (muhtemelen en iyi yolu, ama çalışır)

+0

Bunun nasıl tıklanmadığını bilmiyorum, mükemmel bir anlam ifade ediyor. Teşekkürler. – Samsquanch

+0

Çalışma clean() yönteminin olması mümkün mü? – Erwan

0

şimdilik. Geribildirim hoşgeldiniz.

+1

Cevabıma bak. Temiz fonksiyonunuzu yeniden adlandırmanız gerekiyor. –

0

Alan bildirimlerindeki sıralamanın önemli olduğunu öğrendim, bu yüzden clean_user yönteminde cleaning_data ['canvas'] öğesine erişmek istiyorsanız, öncelikle alanlarınıza tuval eklemeniz gerekir. Ben Modeli Bu size http yazının içerik ekleyebilir