创建具有文件字段的django模型时输入错误

时间:2013-03-18 21:10:18

标签: django file-upload filefield django-models

尝试使用文件字段创建(&保存)django模型时出现以下错误:

  

/ admin / app_name / template / add /

中的TypeError      

强制转换为Unicode:需要字符串或缓冲区,找到int

 Request Method:     POST 

 Request URL:        http://localhost:8000/admin/app_name/template/add/

 Django Version:     1.4.3

 Exception Type:     TypeError

 Exception Value:    coercing to Unicode: need string or buffer, int found

 Exception Location: path_to_python\python\lib\site-packages\django\utils\encoding.py
                     in force_unicode, line 71

这里是models.py: -

class Template(models.Model):

    title = models.CharField(max_length=300, unique=True) 
    template = models.FileField(upload_to='templates')

    def __unicode__(self): 
        return self.title 


class TemplateAdmin(admin.ModelAdmin):

    def upload_file(request,*args, **kwargs):

        if request.method == 'POST':

            instance = Template(template=request.FILES['template'])
            instance.title =request.POST['title']
            instance.save()

admin.site.register(Template, TemplateAdmin)

这里是settings.py: -

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), "media")

此外,虽然在尝试保存(创建)模板对象时出现此错误,但文件似乎仍然在指定目录中上传(因为我可以在该目录中找到它)...但是没有对象实例是created(如Template.objects.all()返回一个空列表)。

1 个答案:

答案 0 :(得分:0)

现在解决了......!

问题是由于这个愚蠢的打字错误(我现在无法发现)---

class Template(models.Model):

    title = models.CharField(max_length=300, unique=True) 
    template = models.FileField(upload_to='templates')

    def __unicode__(self): 
        return self.title 

    def __unicode__(self):
        return self.id