from forms import ВашаФорма
@admin.register(ВашаМодель)
class ВашаМодельAdmin(admin.Modeladmin):
form = ВашаФорма
class ВашаФорма(forms.ModelForm):
ваше_поле = forms.КакойтоСтандартныйФорматПоля()
def save(self, commit=True):
instance = super(ВашаМодель, self).save(commit=False)
# ...тут определяем что делаем с полем при сохранении..
# оно в self.cleaned_data['ваше_поле']
if commit:
instance.save()
return instance
class Meta:
model = ВашаМодель
fields = ('ваше_поле', 'какие-то другие поля которые нужно выводить')
import base64
...
my_image = '<img src="data:image/jpg;base64,{im}" />'.format(im=base64.b64encode(instance.image.read()))
...
mail_html = """
<html>
<head></head>
<body>
<h4>Заголовок письма</h4>
{img}
....
</body>
</html>
""".format(img=my_image)
...
{# тут пробегаемся по вашим приложениям и расставляем ссылки на админки #}
{% block content %}
<div id="content-main">
{% if app_list %}
{% for app in app_list %}
.....
{% endfor %}
{% else %}
<p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}
</div>
{% endblock %}
....
{% for obj in objects_list %}
{% for img in obj.modela_set.all %}
{{ img }}
{% endfor %}
{% endfor %}
....
class Media:
js = ('js/my.js', )
css = {'all': ('css/settings_styles.css', )}
import embedded_media as emb
@admin.register(MyModel)
class MyModelAdmin(ReadOnlyAdmin):
...
@property
def media(self):
media = super(MyModelAdmin, self).media
js = (
'/admin/jsi18n/',
'/static/admin/js/calendar.js',
'/static/admin/js/admin/DateTimeShortcuts.js' )
if self.read_only:
css = { 'all': (emb.CSS('.save-box { display: none; }'),) }
media.add_css(css)
media.add_js(js)
return media
import os
from django.conf import settings
from django.db import models
from django.core.files.storage import FileSystemStorage
my_storage = FileSystemStorage(location=os.path.join(settings.BASE_DIR, 'image'))
class My_model(models.Model):
file1 = models.FileField() # дефолтный MEDIA_ROOT
image = models.FileField(storage=my_storage) # пользовательский путь хранения
from .views import PatientDetailView
...
url(r'patient/(?P<pk>\d+)/', PatientDetailView.as_view(), name='patient_detail'),
...
from django.views.generic import DetailView
from models import Patient
class PatientDetailView(DetailView):
model = Patient
from django.views.generic import DetailView
from .models import Patient
urlpatterns = [
...
url(r'patient/(?P<pk>\d+)/', DetailView.as_view(model=Patient), name='patient_detail'),
]
class Post (models.Model):
published_date = models.DateTimeField(blank=True, null=True, verbose_name='Дата публикации')
public = models.BooleanField(default=False, verbose_name='Опубликовано?')
def save(self, *args, **kwargs):
if self.public:
self.published_date = timezone.now()
else:
self.published_date = None
super(Post, self).save(*args, **kwargs)
from forms import PageForm
@admin.register(Page)
class PageAdmin(admin.ModelAdmin)
form = PageForm
model = Page
class PageForm(forms.ModelForm)
def __init__(self, *args, **kwargs):
super(PageForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['content'].widget=RichTextUploadingField( verbose_name="Текст", page_id=self.instance.id )
...
...
from django.views.generic import ListView
...
class RecordsListView(ListView):
template_name = 'record_list_view.html'
model = Record
paginate_by = 10
...
{% for record in object_list %}
...
{% endfor %}
{% if is_paginated %}
<div class="row">
<div class="col-sm-4">
<div class="dataTables_info" id="dynamic-table_info" role="status" aria-live="polite">
Показано с {{ page_obj.start_index }} по {{ page_obj.end_index }} из {{ page_obj.paginator.count }} результатов
</div>
</div>
<div class="col-sm-2">
<div class="dataTables_paginate paging_simple_numbers" id="dynamic-table_paginate">
<ul class="pagination">
{% if page_obj.has_previous %}
<li class="paginate_button previous" aria-controls="dynamic-table" tabindex="0">
<a href="{% url 'recordt_list'%}?page={{ page_obj.previous_page_number }}{{ search_data|set_search_data }}">Пред.</a>
</li>
{% else %}
<li class="paginate_button disabled previous" aria-controls="dynamic-table" tabindex="0">
<a href="{% url 'ticket_list'%}">Пред.</a>
</li>
{% endif %}
<li class="paginate_button active" aria-controls="dynamic-table" tabindex="0">
<a href="{% url record_list'%}?page={{page_obj.number}}{{ search_data|set_search_data }}">{{ page_obj.number }}</a>
</li>
{% if page_obj.has_next %}
<li class="paginate_button next" aria-controls="dynamic-table" tabindex="0">
<a href="{% url 'rtecord_list'%}?page={{ page_obj.next_page_number }}{{ search_data|set_search_data }}">След.</a>
</li>
{% else %}
<li class="paginate_button next disabled" aria-controls="dynamic-table" tabindex="0">
<a href="{% url 'record_list'%}?page={{ page_obj.paginator.num_pages }}">След.</a>
</li>
{% endif %}
</ul>
</div>
</div>
</div>
{% endif %}
...