【问题标题】:Validating data in Django ModelForm在 Django ModelForm 中验证数据
【发布时间】: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


    【解决方案1】:

    你应该阅读 Django 文档做额外的validation:

    您只需要定义一个clean_file() 方法。

    【讨论】:

    • 太好了! :D 我将使用那个 :D 但在 fileField 的情况下,'value' 是一个 File 对象吗?如果是这样,我如何评估它的扩展?
    • value.name 应该是名字,我想。
    猜你喜欢
    • 2012-09-30
    • 2013-11-26
    • 2013-08-22
    • 2011-01-09
    • 1970-01-01
    • 2018-05-30
    • 2012-05-23
    • 2011-03-13
    相关资源
    最近更新 更多