标签: django-widget

Django Widget Media不起作用

我需要一个小部件,它应该只显示一个块,因为我将使用jQuery添加功能.我试图通过Widget的"媒体"类包含javascript和样式表,它对我不起作用.

这是代码:

class StarsWidget(Widget):
    """
    Widget with stars for rating
    """
    class Media:
        js = (
                settings.MEDIA_URL + 'js/rating.js',
              )

        css = {
                'screen': (
                    settings.MEDIA_URL + 'css/rating.css',
                    )
              }


    def render(self, name, value, attrs=None):
        if value is None: value = ''

        attrs = {'id':'ratingX', 'class':'rating'}
        final_attrs = self.build_attrs(attrs, name=name)
        if value != '':
            # Only add the 'value' attribute if a value is non-empty.
            final_attrs['value'] = force_unicode(value)
        return mark_safe(u'<div %s ></div>' % flatatt(final_attrs))
Run Code Online (Sandbox Code Playgroud)

任何建议或帮助将不胜感激

django django-widget

9
推荐指数
2
解决办法
9237
查看次数

Django MultiValueField - 如何将选择传递给ChoiceField?

我有一个带有charfield和choicefield的多值场.我需要选择传递给choicefield构造,但是当我尝试将其传递到我的自定义multivaluefield我得到一个错误__init__()得到了一个意想不到的关键字参数"选择".

我知道其余的代码是有效的,因为当我从__init__super和super中删除choices关键字参数时,多值字段正确显示但没有任何选择.

这就是我设置自定义多值字段的方法:

class InputAndChoice(object):
    def __init__(self, text_val='', choice_val=''):
        self.text_val=text_val
        self.choice_val=choice_val

class InputAndChoiceWidget(widgets.MultiWidget):
    def __init__(self, attrs=None):
        widget = (widgets.TextInput(),
                  widgets.Select()
                 )
        super(InputAndChoiceWidget, self).__init__(widget, attrs=attrs)

    def decompress(self,value):
        if value:
            return [value.text_val, value.choice_val]
        return [None, None]


class InputAndChoiceField(forms.MultiValueField):
    widget = InputAndChoiceWidget

    def __init__(self, required=True, widget=None, label=None, initial=None,
                 help_text=None, choices=None):
        field = (
                 fields.CharField(),
                 fields.ChoiceField(choices=choices),
                 )
        super(InputAndChoiceField, self).__init__(fields=field, widget=widget, 
              label=label, initial=initial, help_text=help_text, choices=choices)
Run Code Online (Sandbox Code Playgroud)

我称之为:

input_and_choice = InputAndChoiceField(choices=[(1,'first'),(2,'second')])
Run Code Online (Sandbox Code Playgroud)

那么如何将选择传递给我的ChoiceField字段呢?

编辑:

我试过stefanw的建议,但仍然没有运气.我已经使用logging.debug在init的末尾打印出InputAndChoiceField的内容,self.fields [1] .choices包含正确的值,但是它没有在浏览器中显示任何选项.

django django-models django-forms django-widget

9
推荐指数
2
解决办法
9292
查看次数

Django ImageField小部件,接受上传或外部链接作为源

是否有一个用于ImageFields的Django小部件,它提供上传图像或提供网址的选项?

我想喜欢Summernote没有(如果你单击图像图标)在其实例

我浏览了很多应用程序,他们都专注于上传和缩略图.

编辑

仍在努力尝试做到这一点.我正在寻找像django-summernote允许你添加图像的方式.

还要看一下有关将图像链接保存到ImageField的问题.如何在Summernote等小部件中同时使用它们?

Django从url保存图像并与ImageField连接

python django django-widget imagefield

9
推荐指数
1
解决办法
579
查看次数

django admin如何在readonly字段上显示小部件

当字段为readonly时,我想在django admin的字段上显示我的小部件.

admin.py

class AudioTrackAdminInline(admin.StackedInline):
    model = AudioTrack
    form = AudioTrackForm
    readonly_fields = ('file',)
Run Code Online (Sandbox Code Playgroud)

forms.py

class AudioTrackForm(forms.ModelForm):
    class Meta:
        model = AudioTrack
        widgets = { 'file': MediaFileInput, } # my widget
Run Code Online (Sandbox Code Playgroud)

当文件不是只读时,它会显示小部件确定.但当我把它作为readonly包含时,我看到文本行.(如果只读,Django不会使用我的表格)

即使在只读字段,我如何才能使用它?

要么

如果我只设置我的字段,如何显示另一个小部件?

django django-forms django-admin django-widget

8
推荐指数
2
解决办法
4700
查看次数

如何在不重写ModelForm中的字段定义的情况下将ManyToManyField小部件更改为CheckboxSelectMultiple

我有ModelForm使用ManyToManyField的django 模型.我想将此字段的小部件更改为CheckboxSelectMultiple.我可以在不覆盖表单定义中的字段的情况下执行此操作吗?

我经常使用类似这样的代码:

class MyModel(ModelForm):
    m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
                                               widget = forms.CheckboxSelectMultiple())
Run Code Online (Sandbox Code Playgroud)

还有其他办法吗?

编辑:我需要这个Django 1.1.1项目

django many-to-many django-forms django-widget

7
推荐指数
2
解决办法
6567
查看次数

Django:如何检查自定义窗口小部件定义中是否存在字段错误?

我想创建小部件,当关联字段有错误时,将特定类添加到元素标记.

我很难从小部件定义代码中查找有关如何检查字段是否存在与之关联的错误的信息.

目前我有以下存根窗口小部件代码(最终窗口小部件将使用更复杂的标记).

from django import forms
from django.utils.safestring import mark_safe
class CustomTextWidget(forms.Widget):
        def render(self, name, value, attrs):
            field_has_errors=False # change to dynamically reflect field errors, somehow
            if field_has_errors:
                error_class_string="error"
            else:
                error_class_string="" 
            return mark_safe(
            "<input type=\"text\" class=\"%s\" value=\"%s\" id=\"id_%s\" name=\"%s\">" % (error_class_string, value, name, name)
            )
Run Code Online (Sandbox Code Playgroud)

任何人都可以阐明在这里填充field_has_errors布尔的合理方法吗?(或者可能建议一种更好的方法来完成我正在尝试做的事情).提前致谢.

django django-forms django-widget

7
推荐指数
2
解决办法
5647
查看次数

小部件在两个字段中填充值

我知道如果我需要为django-admin中的字段定制"选择器",我需要创建一个自定义小部件.但是,如果小部件必须生成两个值,例如X和Y坐标,如何将它们填充到模型的两个不同字段中呢?

django django-models django-admin django-widget

7
推荐指数
2
解决办法
3297
查看次数

Django SelectDateWidget仅显示月份和年份

是否有一个不同的小部件或参数允许django仅显示/采用年和月输入而不是年,月和日?

目前正在使用SelectDateWidget.

django django-forms django-widget

7
推荐指数
1
解决办法
8944
查看次数

Django Float 字段输入

创建接受浮点数并具有与 NumberInput 相同功能的 django 表单字段的最佳方法是什么?我的意思是使用相同的功能是 django 的 NumberInput 在输入旁边有箭头,可以增加或减少数字,它也接受 min_value 和 max_value。如果我使用 TextInput 小部件,我将无法获得此功能。如果我使用 NumberInput 小部件,它将不适用于浮点数:

homework = forms.FloatField(required=False, max_value=10, min_value=0, widget=NumberInput(attrs={'id': 'form_homework'}))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

当我单击 + - 按钮时,它不包括浮点数(即 5.5)。此外,如果我想将实际浮点数(作业成绩)设置为初始值(使用 Jquery),它根本不显示浮点数。

欢迎任何建议。

编辑:

如果我做:

class NumberInput(TextInput):
    input_type = 'number'

homework = forms.FloatField(required=False, max_value=10, min_value=0,
    widget=NumberInput(attrs={'id': 'form_homework', 'step': '0.1'}))
Run Code Online (Sandbox Code Playgroud)

'step' 属性有效,但 max_value/min_value 无效。如果我不以这种方式定义 NumberInput 并使用常规的 NumberInput,则它根本不起作用。

forms django floating-point django-widget

7
推荐指数
2
解决办法
1万
查看次数

如何使用基于Django 1.11模板的表单呈现将CSS类添加到窗口小部件/字段

注意:这个问题不应该与之前类似但在Django 1.11发布基于模板的表单呈现之前相似的问题混淆.

我知道Django现在有基于模板的表单渲染.据我所知,这应该解决了必须从视图或表单中注入CSS类的问题,而不是将所有HTML/CSS保留在模板中.

这是我的目标:让我的表单和视图集中在什么显示,并专注于我的模板是如何被显示.所以我想在我的模板中保留所有HTML/CSS.

所以,我的问题是:

  • 如何向模板系统中的form-text所有TextInput小部件添加类(例如)?
  • 如何alert-warning从模板系统向所有错误消息(验证失败)添加类(例如)?

我可能误解了这个新功能的一些内容,所以如果我这样做了,请随时告诉我这是不是它的工作原理,或者我是在问这个不可能的事情.理想情况下,我想实现这些表单渲染更改到主模板.

示例问题

views.py:

class SignUp(generic.edit.CreateView):

    model = models.User
    template_name = 'usermgmt/sign_up.html'
    form_class = forms.UserCreateForm
    success_url = '/sign_up_done/'
Run Code Online (Sandbox Code Playgroud)

templates/master.html(我想在这里添加一些导致所有TextInput小部件获得类的东西):

<html>
<head>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<title>{% block title %}{% endblock %} | Website</title>
</head>
<body>
  <div class="content-wrapper clearfix">
    {% block main %}{% endblock %}
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

templates/usermgmt/sign_up.html:

{% extends 'master.html' %}

{% block title %}Sign Up{% endblock …
Run Code Online (Sandbox Code Playgroud)

css python django django-templates django-widget

7
推荐指数
2
解决办法
1802
查看次数