Two scoops of Django建議做一個自定義驗證的形式如下:如何將當前用戶傳遞給自定義表單驗證器?
class MyModel(models.Model):
body = models.TextField()
repo_name = models.CharField(max_length=50)
def validate_repo_existance(value):
# Validate repo existance.
# This needs the Github account which is bound
# to the user account though.
class MyModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields["repo_name"].validators.append(validate_repo_existance)
class Meta:
model = MyModel
有沒有辦法通過,是表單頁面自定義驗證的用戶?
很酷,但我怎麼能'__init__'方法''用戶''validate_repo_existance'?看來你只能傳遞一個沒有參數的函數對象。 – Bentley4
對於簡單的字段驗證'clean_fieldname()'方法就足夠了,如果你正在基於多個字段中的值進行驗證,使用'clean()'方法。如果你需要使用驗證器(順便說一句,你可能意思是'self.validators.fields [「repo_name」]。append(validate_repo_existance)',你跳過了'validators'部分),你可以使用一個在構造函數中獲取用戶的類。看看Django如何做到這一點:https://github.com/django/django/blob/master/django/forms/fields.py#L212 – waverider
謝謝你爲我提供了重要的線索。另外,感謝您的糾正,我忘了在我的問題中編寫'validators'屬性(但它是在我的真實代碼中)。 – Bentley4