有如下Model
from django.db import models
from django.utils.encoding import force_unicode
# Create your models here.
class People(models.Model):
name = models.CharField(max_length = 200)
def __unicode__(self):
return force_unicode(self.name)
class Buy(models.Model):
from_people = models.ForeignKey(People, related_name = 'sale')
to_people = models.ForeignKey(People, related_name = 'buyer')
price = models.IntegerField()
def __unicode__(self):
return force_unicode(u'%s-%s-%s' % (self.from_people, self.to_people, self.price))
欲在Buy对象的admin的change_list页面中显示from_people和to_people的名称,应该怎么做呢?
找到的定制方法如下:
admin.py
import django.contrib.admin.sites as djsite
import django.contrib.admin.options as djopt
from django.utils.encoding import force_unicode
from django.db.models.fields.related import RelatedField
import models as mym
def normal_format(val):
return force_unicode(u'%s' % val)
def make_func(model, admin_order_field, format_fun = normal_format,
short_description = None, allow_tags = False,
use_self = False):
lst = admin_order_field.split('__')
def func_internal(self, obj = None):
if not use_self:
obj = self
s = ''
for s in lst:
obj = getattr(obj, s, None)
if not obj:
return force_unicode(admin_order_field)
return format_fun(obj)
if not short_description:
i = 0
while i < len(lst):
s = lst[i]
i += 1
model = model._meta.get_field_by_name(s)[0]
if isinstance(model, RelatedField):
model = model.rel.to
short_description = model.verbose_name
func_internal.short_description = short_description
func_internal.allow_tags = allow_tags
func_internal.admin_order_field = admin_order_field
return func_internal
class PeopleModelAdmin(djopt.ModelAdmin):
list_display = ['name']
class BuyModelAdmin(djopt.ModelAdmin):
saler_name = make_func(mym.Buy, 'from_people__name')
buyer_name = make_func(mym.Buy, 'to_people__name')
list_display = [saler_name, buyer_name, 'price']
djsite.site.register(mym.People, PeopleModelAdmin)
djsite.site.register(mym.Buy, BuyModelAdmin)
#admin.py end
按照上面的方法修改后,change_list页面中的显示为:
分享到:
相关推荐
文档中包含的 `django1.2.chm` 和 `djangobook2ch.chm` 文件分别提供了 Django 1.2 的中文版和英文版官方文档,对于学习和查阅 Django 1.2 的相关知识非常有帮助。CHM 文件是一种帮助文件格式,包含了索引、搜索和...
这个库的版本为2.2.0,主要功能是为Celery任务提供持久化的结果存储,使得在Django项目中使用Celery时,可以方便地管理和检索异步任务的结果。 首先,我们来理解一下Django。Django是一款用Python编写的高级Web框架...
`django_rename_app` 这个库专注于解决Django项目中应用重命名的问题。在Django框架中,应用程序是包含模型、视图、模板和URL配置的独立单元,它们共同构成了一个功能完整的Web应用。当开发者需要修改应用的名称时,...
标题中的"PyPI 官网下载 | django_mock_queries-0.0.16.4.tar.gz"表明这是一个从Python Package Index (PyPI)官方源下载的软件包,名为`django_mock_queries`,版本号为0.0.16.4,格式为tar.gz。PyPI是Python社区...
它允许用户基于特定条件筛选MongoDB中的数据,类似于Django ORM中的过滤器。这使得开发者能够灵活地构建复杂查询,从而高效地从数据库中获取所需信息。 **安装与使用** 要使用`django_mongoengine_filter-0.3.1-py...
Django_dnoticias_auth则是Django生态中的一个授权(Authentication)模块,版本号1.2.7.1,意味着它是经过多次迭代和优化的成熟组件。在Python库中,这样的模块通常提供额外的功能或定制化服务,以增强Django的默认...
ERP管理软件
标题中的"Python库 | django_counter_field_py3-0.0.1.2.tar.gz"指出这是一个基于Python的软件包,具体来说是针对Django框架的一个扩展模块,名为`django_counter_field`. 这个版本号0.0.1.2表明它是该库的早期版本...
标题"PyPI 官网下载 | django_comments_xtd-1.2-py3.3.egg" 提供了关键信息,表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为`django_comments_xtd`,版本为1.2,适用于Python 3.3环境。...
2. **admin_changelist**:在Django的管理后台,`changelist`是用于显示对象列表的地方,允许用户查看、搜索、排序和操作数据。这里的`admin_changelist`可能包含自定义的视图或者模板,用于改变默认的后台列表展示...
在给定的资源中,我们看到的是一个名为“django_trix_fork”的Python包的特定版本,即0.3.1.2。这个包以`.whl`文件格式提供,这是一种预编译的Python轮子文件,旨在简化安装过程。 **Python 轮子(Wheels)** `....
### Django 1.2 电子商务应用详解 #### 一、前言 随着互联网技术的不断发展,电子商务已经成为现代商业的重要组成部分。作为一款强大的Python Web框架,Django提供了丰富的工具和库来构建高性能、高安全性的Web...
这会使得视图`my_view`的所有日志输出都实时显示在`django_live_log`的界面中。 在实际开发中,`django_live_log`不仅可以用于调试,还可以作为生产环境的监控工具。通过定制日志级别和过滤规则,可以有效地关注到...
8. **应用间的关系和协作**:从3.5节的内容可以看出,Django项目中的各个应用可以互相协作,比如在views.py中可以引用模型来操作数据,在模板中可以显示视图生成的数据。 9. **用户认证系统**:文档中提到了login....
2. 配置:在Django项目的settings.py中,配置Celery和AWS SES的相关参数,如AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY以及AWS_REGION等。 3. 集成:在Django的app中,使用`django_celery_ses`提供的邮件发送函数,...
7. **Python库的使用**: 在Python项目中,通过`pip install django_minio_backend-2.7.0-py3-none-any.whl`命令,可以将这个Wheels包安装到Python环境中,然后在Django项目的设置中配置`django_minio_backend`作为...
标题中的"PyPI 官网下载 | django_idp_user-0.4.2.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的开源软件包,名为`django_idp_user`,版本为0.4.2,且已打包成`.tar.gz`格式。这种格式是Linux和Unix...
标题中的“PyPI 官网下载 | django_cors_headers_multi-1.2.0-py2-none-any.whl”指的是Python Package Index(PyPI)上发布的`django_cors_headers_multi`项目的1.2.0版本,这是一个适用于Python 2且不依赖特定硬件...