- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一些 django 代码,其中所有模型都有 __unicode__
方法,如下所示:
def __unicode__(self):
return str(self.id) + "; " + ", " + self.first_name + " " + self.last_name
(所有情况下的格式都是:打印 self.id
,然后用逗号分隔其余字段)。清理此类样板的最佳方法是什么?我正在考虑使用 __unicode__
方法声明一个 MyModel
类,该方法通过检查列出所有字段,然后让我当前的所有模型继承自 MyModel
而不是当前的 django.db.models.Model 。但这样做会改变底层的 MySQL 表,我不想为了这样的小事而进行如此大规模的迁移。
最佳答案
正如 Kevin Christopher Henry 所建议的,您可以创建一个 abstract base class并让你的所有模型继承它。这会工作得很好。
但是,Python 支持多类继承。这意味着一个类可以从多个基类继承。有关此主题的更多信息(我建议您阅读它,因为它可能很棘手)可以找到 here .
通过多个类继承,您可以创建一个至少在我看来更加干净的解决方案。您只需创建一个仅包含所需代码的类:
class PredefinedUnicodeMixin(object):
def __unicode__(self):
return str(self.id) + "; " + ", " + self.first_name + " " + self.last_name
正如您可能想象的那样,单独使用此类不会有太大帮助。但试试这个:
class MyModel(PredefinedUnicodeMixin, models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
因为我们的 mixin 类首先列出,所以它会覆盖其他类中指定的任何属性和方法。
更改 __unicode__
方法来迭代字段并不难,self._meta.get_all_field_names()
应该包含所有字段名称。
当然,在Python 3上你应该使用__str__
而不是__unicode__
。
关于django - 如何在我的所有模型上自动生成 __unicode__ 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145749/
我在 python 中有以下类 class myTest: def __init__(self, str): self.str = str def __unicode_
有没有办法包含模型的 __unicode__ 方法 搜索字段 元组?我不想创建特殊字段来存储 的结果__unicode__ 在模型中,因为这个值取决于其他几个模型...... 最佳答案 不,这是不可能
我正在处理一些 django 代码,其中所有模型都有 __unicode__ 方法,如下所示: def __unicode__(self): return str(self.id) + ";
我有一个如下所示的模型类: class Address(models.Model): # taking length of address/city fields from existing
我有两个模型, class Person(models.Model): first_name = models.CharField(max_length=50) last_name =
假设我有一个名为 Animal 的类和一个名为 Dog 的子类。如何从 Dog 类访问 Animal 的 unicode 定义? class Animal: def __unicode_
在 Django 管理中删除具有多对多关系的对象时,尽管两个连接表具有 __unicode__ 方法,但我没有显示名称。 即。它只是显示... (用户-公司关系:User_company 对象) 我想
我正在使用 Django 运行一个小的患者列表。在管理界面中,我有一些在 admin.py 文件中定义的列。 class InpatientAdmin(admin.ModelAdmin): list_
如何让 Django 模型 __unicode__ 方法返回多个值到多个列? 最佳答案 只需将以下内容添加到类中: def __unicode__(self): return '%s %s'
(Django 1.x,Python 2.6.x) 我有以下模型: class Animal(models.Model): pass class Cat(Animal): def __unic
首先,有没有? 如果没有,是否有一种很好的方法来强制执行类似的操作 print '%s' % obj 要调用 obj.__unicode__ 而不是 obj.__str__? 最佳答案 只需使用 un
对于何时应该实现 __str__() 与 __unicode__() 是否有 python 约定。我见过类覆盖 __unicode__() 比 __str__() 更频繁,但它似乎并不一致。是否有具体
在安装了 Django 的开发源代码以及来自源代码的 PostgreSQL 以及来自源代码的所有其他需要的东西后,我正在学习 Django 教程。我正在尝试在 Ubuntu 12.10 上使用 pyt
Class NickName(models.Model): name = models.CharField() def __unicode__(self): retur
我所有的 django 模型都有 unicode 函数,目前这些往往是这样写的: def __unicode__(self): return u'Unit: %s -- %s * %f' %
我正在尝试通过自己开发一个网站来打破僵局,我从创建一些注册表页面并列出数据库记录开始。 我对 __unicode__ 的事实感到困惑方法不打印我的记录的用户名和 __str__做! 我知道使用 __u
我想在 Django 管理界面中显示模型的用户名,但不太确定该怎么做。 The models.py: class Adult(models.Model): user =
在 django 管理员中,我有一个 TabularInline 用于 ManyToMany 字段,并设置了 raw_id_fields 。它在 html 输入字段旁边显示对象的 unicode()。
我正在从 djangobook 学习 Django,在第 6 章中,安装管理应用程序的地方,syncdb 命令在 models.py 中返回语法错误(返回 u'%s %s' % (self.first
如果我写类似的东西 class Chip(models.Model): name = models.CharField(max_length=16) shortname = mode
我是一名优秀的程序员,十分优秀!