mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
@@ -643,7 +643,10 @@ class FileField(Field):
|
||||
|
||||
class ImageField(FileField):
|
||||
default_error_messages = {
|
||||
'invalid_image': _("Upload a valid image. The file you uploaded was either not an image or a corrupted image."),
|
||||
'invalid_image': _(
|
||||
"Upload a valid image. The file you uploaded was either not an "
|
||||
"image or a corrupted image."
|
||||
),
|
||||
}
|
||||
|
||||
def to_python(self, data):
|
||||
|
||||
@@ -49,7 +49,10 @@ def get_declared_fields(bases, attrs, with_base_fields=True):
|
||||
stacklevel=2,
|
||||
)
|
||||
|
||||
fields = [(field_name, attrs.pop(field_name)) for field_name, obj in list(six.iteritems(attrs)) if isinstance(obj, Field)]
|
||||
fields = [
|
||||
(field_name, attrs.pop(field_name))
|
||||
for field_name, obj in list(six.iteritems(attrs)) if isinstance(obj, Field)
|
||||
]
|
||||
fields.sort(key=lambda x: x[1].creation_counter)
|
||||
|
||||
# If this class is subclassing another Form, add that Form's fields.
|
||||
|
||||
@@ -969,12 +969,22 @@ def _get_foreign_key(parent_model, model, fk_name=None, can_fail=False):
|
||||
if can_fail:
|
||||
return
|
||||
raise ValueError(
|
||||
"'%s.%s' has no ForeignKey to '%s.%s'."
|
||||
% (model._meta.app_label, model._meta.object_name, parent_model._meta.app_label, parent_model._meta.object_name))
|
||||
"'%s.%s' has no ForeignKey to '%s.%s'." % (
|
||||
model._meta.app_label,
|
||||
model._meta.object_name,
|
||||
parent_model._meta.app_label,
|
||||
parent_model._meta.object_name,
|
||||
)
|
||||
)
|
||||
else:
|
||||
raise ValueError(
|
||||
"'%s.%s' has more than one ForeignKey to '%s.%s'."
|
||||
% (model._meta.app_label, model._meta.object_name, parent_model._meta.app_label, parent_model._meta.object_name))
|
||||
"'%s.%s' has more than one ForeignKey to '%s.%s'." % (
|
||||
model._meta.app_label,
|
||||
model._meta.object_name,
|
||||
parent_model._meta.app_label,
|
||||
parent_model._meta.object_name,
|
||||
)
|
||||
)
|
||||
return fk
|
||||
|
||||
|
||||
|
||||
@@ -55,16 +55,23 @@ class Media(object):
|
||||
return mark_safe('\n'.join(chain(*[getattr(self, 'render_' + name)() for name in MEDIA_TYPES])))
|
||||
|
||||
def render_js(self):
|
||||
return [format_html('<script type="text/javascript" src="{0}"></script>', self.absolute_path(path)) for path in self._js]
|
||||
return [
|
||||
format_html(
|
||||
'<script type="text/javascript" src="{0}"></script>',
|
||||
self.absolute_path(path)
|
||||
) for path in self._js
|
||||
]
|
||||
|
||||
def render_css(self):
|
||||
# To keep rendering order consistent, we can't just iterate over items().
|
||||
# We need to sort the keys, and iterate over the sorted list.
|
||||
media = sorted(self._css.keys())
|
||||
return chain(*[
|
||||
[format_html('<link href="{0}" type="text/css" media="{1}" rel="stylesheet" />', self.absolute_path(path), medium)
|
||||
for path in self._css[medium]]
|
||||
for medium in media])
|
||||
return chain(*[[
|
||||
format_html(
|
||||
'<link href="{0}" type="text/css" media="{1}" rel="stylesheet" />',
|
||||
self.absolute_path(path), medium
|
||||
) for path in self._css[medium]
|
||||
] for medium in media])
|
||||
|
||||
def absolute_path(self, path, prefix=None):
|
||||
if path.startswith(('http://', 'https://', '/')):
|
||||
@@ -341,7 +348,10 @@ class ClearableFileInput(FileInput):
|
||||
input_text = ugettext_lazy('Change')
|
||||
clear_checkbox_label = ugettext_lazy('Clear')
|
||||
|
||||
template_with_initial = '%(initial_text)s: <a href="%(initial_url)s">%(initial)s</a> %(clear_template)s<br />%(input_text)s: %(input)s'
|
||||
template_with_initial = (
|
||||
'%(initial_text)s: <a href="%(initial_url)s">%(initial)s</a> '
|
||||
'%(clear_template)s<br />%(input_text)s: %(input)s'
|
||||
)
|
||||
|
||||
template_with_clear = '%(clear)s <label for="%(clear_checkbox_id)s">%(clear_checkbox_label)s</label>'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user