我有一个简单的Package
模型from models import Package
from django import forms
class PackageForm(forms.ModelForm):
class Meta:
model= Package
fields= ['name', 'version', 'url', 'description', 'arch', 'dependancies', 'conflicts', 'file']
我如何要求模型在验证中检查文件扩展名(类是FileField)是否为.sh,例如?
有没有办法把它放在模型中?我只能在视图中管理吗?
由于
编辑: 另外,忘了问一下,模型有auth用户模型的外键...它将包含当前用户..模型如何管理?
再次感谢
谢谢你的回答!我抓住了这个......虽然我遇到了问题
包中包含一个外键给django.contrib.auth.models用户模型, 处理表单时如何告诉modelform将当前用户对象传递给模型实例? 我想到了这个......
views.py
def add(request):
if request.method == 'POST':
the_model= PackageForm(request.user, request.POST, request.FILES)
if the_model.is_valid():
the_model.save()
我覆盖了模型中的 init :
from models import Package
from django import forms
class PackageForm(forms.ModelForm):
def __init__(self,user,*args,**kwargs):
super (PackageForm,self ).__init__(*args,**kwargs) # populates the post
self.fields['maintainer_name'].queryset = user # adds the user object passed by add in views.py
class Meta:
model= Package
fields= ['name', 'version', 'url', 'description', 'arch', 'dependancies', 'conflicts', 'file']
manteiner_name是ForeignKey(用户)对象... 它给了我一个keyerror :(那不好...... 任何解决方案?
谢谢!
答案 0 :(得分:6)
您应该阅读有关进行额外验证的django文档:http://docs.djangoproject.com/en/1.1/ref/forms/validation/#ref-forms-validation您只需要定义clean_file()
方法。