以django形式创建选择器小部件

时间:2015-02-12 23:09:08

标签: django django-forms django-admin django-widget

我想创建一个表单小部件,如管理页面中的权限选择器。

我想要选择记录的模型是数据库中的视图

class Ftp_Archivo(models.Model):
      id_lista = models.IntegerField(primary_key=True)
      id_proveedor = models.IntegerField()
      codigo_asignado = models.CharField(max_length=50, verbose_name='Codigo Asignado')
      nombre = models.CharField(max_length=150)
      archivo = models.CharField(max_length=500)

      class Meta:
            managed=False
            db_table='pc_archivos_no_migrados'

我想保存此模型中的记录:

class PYC_Archivo(models.Model):
      id_archivo = models.AutoField(primary_key=True)
      id_proveedor =  models.ForeignKey(Proveedor,db_column='id_proveedor',verbose_name='Proveedor')
      codigo_asignado = models.CharField(max_length=50, verbose_name='Codigo Asignado')
      nombre = models.CharField(max_length=150)
      archivo = models.CharField(max_length=500)
      fecha_migracion = models.DateField(auto_now = True,verbose_name='Fecha Migracion')

我不知道是否可以使用管理页面中的权限选择器之类的小部件以及我需要在表单中使用的小部件。

1 个答案:

答案 0 :(得分:2)

我明白了

我需要从admin.widgets导入小部件,并在表单定义中添加这样的正确css和js文件

from django.contrib.admin.widgets import FilteredSelectMultiple

class fileform(forms.Form):
    archivos = forms.ModelMultipleChoiceField(queryset=Proveedor.objects.all(),required=True,
               widget=FilteredSelectMultiple("Proveedor",is_stacked=False))
 class Media:
        css = {
            'all':('/admin/css/widgets.css',),
        }
        # jsi18n is required by the widget
        js = ('/admin/jsi18n/',)

并且在模板中需要调用媒体文件

{{form.media}}