对于数字输入,有没有办法step=1允许用户输入十进制数字?
原因是我希望输入框中的箭头将值增加/减少 1,但如果用户想要更具体,则允许用户输入小数。
\n\n目前我有:
\n\n<input type="number" name="price" placeholder="\xc2\xa3" step="1" id="id_price">\nRun Code Online (Sandbox Code Playgroud)\n\n箭头按预期工作,但例如,如果输入 2.99,我会收到验证错误。删除该步骤允许输入小数,但箭头现在仅增加/减少 0.01。
\n\n我倾向于 Javascript 解决方案,但我只是想知道最好的解决方案是什么。还有其他选择或现有的库吗?
\n最近将 Django 项目从 2.x 升级到 3.x,我注意到mysql.connector.django后端(来自mysql-connector-python)不再工作。它使用的最后一个 Django 版本是 2.2.11。3.0 就打破了。我在用mysql-connector-python==8.0.19。
运行时manage.py runserver出现如下错误:
django.core.exceptions.ImproperlyConfigured: 'mysql.connector.django' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
Run Code Online (Sandbox Code Playgroud)
我知道这不是官方的 Django 后端,但由于我无法控制的原因,我必须在这个项目上使用它。
我 80% 确定这是库的问题,但我只是想看看除了等待更新之外是否可以采取任何措施来解决它。
更新:
mysql.connector.django现在可以与 Django 3+ 一起使用。
我创建了一个简单的自定义MultiValueField,MultiWidget目的是输入出生日期,但允许单独输入日、月和年。理由是该应用程序用于输入历史数据,因此这些字段中的一个或多个可能是未知的。在面向用户的站点上还有一个显示“未知”的复选框。
我发现一切正常,除了当我在管理站点中保存一个对象的实例并创建一个新实例时,空白的管理表单显示上一个条目的日期值:
对于新条目,所有这些字段都应为空白。
看起来该字段没有正确重新初始化,但我不确定应该在哪里进行。我通过在表单中检查是否重新初始化字段来添加了一个解决方法,但我觉得这应该在自定义字段/小部件中完成。
示例代码:
class CustomDateWidget(forms.MultiWidget):
"""Custom MultiWidget to allow saving different date values."""
template_name = 'myapp/widgets/custom_date_widget.html'
def __init__(self, attrs=None):
_widgets = (forms.NumberInput(attrs=({'placeholder': 'DD'})),
forms.NumberInput(attrs=({'placeholder': 'MM'})),
forms.NumberInput(attrs=({'placeholder': 'YYYY'})),
forms.CheckboxInput())
super().__init__(_widgets, attrs)
def decompress(self, value):
if value:
return value
else:
return '', '', '', False
def value_from_datadict(self, data, files, name):
value_list = [
widget.value_from_datadict(data, files, name + '_%s' % i)
for i, widget in enumerate(self.widgets)
]
return value_list
class CustomDateField(forms.MultiValueField):
"""Custom MultiValueField to allow saving different …Run Code Online (Sandbox Code Playgroud) 我目前正在调试 Django 站点的一个奇怪问题,其中一个特定模型在创建新实例或在管理界面中编辑现有实例时触发 404 错误。
具体来说,提交表单时会发生错误。我可以GET改变形式就好了。
这仅发生在实时站点上并且仅在保存此模型时发生。所有其他模型都按预期运行,当我在本地运行它时,一切都按预期运行。当以编程方式创建时,一切都很好,无论是现场还是本地。
这是我的模型:
class Content(models.Model):
"""Base Content class."""
title = models.CharField(max_length=200)
body = RichTextUploadingField(max_length=30000, blank=True, null=True, config_name='admin')
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
author = models.ForeignKey(to=User, on_delete=models.CASCADE)
slug = models.SlugField(max_length=100, null=True, default=None)
class Meta:
abstract = True
class ContentPage(Content):
"""Represents a page of generic text content."""
title = models.CharField(max_length=200, unique=True)
has_url = models.BooleanField(default=False, help_text='Sets the page to accessible via a URL.')
banner = models.ImageField(upload_to='myfiles/banners/', blank=True, null=True)
def save(self, *args, **kwargs):
"""Create the slug …Run Code Online (Sandbox Code Playgroud) 自从升级到 后django-versatileimagefield==2.0,我就无法让它与 Google App Engine 很好地配合。按原样使用它会出现其他人报告的错误:
ImportError: failed to find libmagic. Check your installation
我读过类似的问题,其中提到添加python-magic-bin==0.4.14要求。这似乎可以在本地解决问题。
但是,当我部署到 Google App Engine 时,尝试安装时会失败python-magic-bin:
Could not find a version that satisfies the requirement python-magic-bin==0.4.14
No matching distribution found for python-magic-bin==0.4.14
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 Python 3.7.2 的 App Engine 灵活环境。我尝试了多种不同的方法来安装所需的软件包,但就是无法让它工作。
我有一个Address带有字段的基本模型formatted_address,它使用自定义LocationPicker小部件(本质上是用于搜索地址的自动完成功能)。
有几个类继承自Address,包括Place下面我的类。
模型.py
class Address(models.Model):
formatted_address = models.CharField(max_length=500, verbose_name='address')
...
class Meta:
abstract = True
class Place(ClusterableModel, Address)
...
panels = [
MultiFieldPanel([
FieldPanel('formatted_address', widget=LocationPicker(attrs={'placeholder': 'Search addresses')),
FieldPanel('some_other_field')
], heading='My field group')
Run Code Online (Sandbox Code Playgroud)
小部件.py
class LocationPicker(WidgetWithScript, TextInput):
template_name = 'places/forms/widgets/location_picker.html'
@property
def media(self):
print('get media')
return Media(
css={'screen': ('places/css/location-picker.css',)},
js=('places/js/location-picker.js',),
)
Run Code Online (Sandbox Code Playgroud)
这个小部件在 Wagtail 管理员中显示得很好,我已经ModelAdmin为其注册了一个实例。
但是,我遇到的问题是我无法让小部件在我的 vanilla Django 中正确显示ModelForm。小部件模板文件已呈现,但不包括关联的媒体。
我创建的表格如下:
表格.py
class PlaceForm(ModelForm):
class Meta:
model = Place …Run Code Online (Sandbox Code Playgroud)