自定义Django FileField网址小部件不会以管理员change_form的格式上传任何文件

时间:2018-07-25 13:06:18

标签: django django-forms django-templates django-admin

我有一个Files表,其中包含有关远程目录中上载文件的信息。这是该表的模型:

class Files(models.Model):    
    id = models.AutoField(primary_key=True)
    subjectid = models.ForeignKey('Subjects', models.DO_NOTHING, db_column='subjectid')
    filetypeid = models.ForeignKey(FileTypes, models.DO_NOTHING, db_column='filetypeid')
    filedescid = models.ForeignKey(FileDescription, models.DO_NOTHING, db_column='filedescid')      
    filepath = models.CharField(max_length=45, blank=True, null=True)       
    filename = models.FileField(upload_to='attachments/', blank=True, null=True)            
    ispublic = models.IntegerField(choices=YESNO)
    extra_info = models.CharField(max_length=255, blank=True, null=True)

    def __str__(self):
        return self.filename.name or ''

    class Meta:
        managed = False
        db_table = 'files'
        verbose_name_plural = 'files'

我创建了自己的URL小部件,以替换在change_form模板中显示为“ 当前:”的Django FileField url。该链接指向下载文件的视图。到目前为止,效果很好,但是问题是当我尝试添加新文件时,可以使用Browse文件按钮选择新文件,但是当我单击Save字段{{1 }}字段为空,没有文件上传。

filename

有人可以告诉我我在这里想念什么吗?

1 个答案:

答案 0 :(得分:0)

他失去了Django社区,

我将回答我自己的问题,因为似乎没有人能够意识到答案。碰巧,作为新手,我在这里随处都可以找到示例,但是对FileField关联的小部件进行子类化几乎没有什么用。因此,深入研究Django代码后,我找到了答案。就我而言,问题是我从MyAdminURLFieldWidget派生了URLInput而不是正确的子类ClearableFileInput

不客气。