【发布时间】:2011-01-13 17:20:18
【问题描述】:
我有一个简单的包装模型
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 User 模型...它将包含当前用户.. modelform 如何管理它?
再次感谢
感谢您的回答!我正在掌握这个..虽然我遇到了问题
包包含一个外键到 django.contrib.auth.models 用户模型, 处理表单时,我如何告诉模型表单将当前用户对象传递给模型实例? 我想到了这个……
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()
我覆盖了modelform中的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(User) 对象... 它给了我一个关键错误:(这不好...... 有什么解决办法吗?
谢谢!
【问题讨论】:
标签: django validation django-forms filefield