auto_now 每次保存该对象时,使用当前时间修改该字段 modify
auto_now_add 第一次保存该对象时,使用当前时间修改该字段 create
2. Field default value:
default
The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.
3. Model meta data:
class Meta:
ordering = ["horn_length"]
verbose_name_plural = "oxen"
verbose_name = "ox"
4. raw_id_fields = ('producer',), 外键的搜索对话框
5. 可以查看一下 User权限管理界面
6. 太长的String,可以使用TextField,而不是CharField,显示时,是Textarea空间
7. Search Field 使用 "attribute__name"
根据外键的名称,进而使用子表的其他属性进行搜索
raw_id_fields = ('domain',)
search_fields = ('name','domain__name')
8. 在list_display中,自定义日期格式;
class ProvinceAdmin(admin.ModelAdmin):
list_display = ('listCreateDate', 'listModifyDate',)
def listModifyDate(self, obj):
return obj.modifyDate.strftime('%Y-%m-%d')
listModifyDate.short_description='ModifyDate'
def listCreateDate(self, obj):
return obj.createDate.strftime('%Y-%m-%d')
listCreateDate.short_description='CreateDate'
注意使用的函数是在 Admin class中, 接口是 f(self, obj), 因为需要针对每个record的值进行修改,所以只能在Admin里面增加函数。
list_display支持多种方式的自定义函数
model 级别的def 接口是:def f(self),针对 table schemal 的属性操作,即列级别的操作。
admin 级别的def 接口是: def f(self, obj),针对 table的Row进行操作。
还有global级别的接口是: def f(self, obj),针对table的Row,与 admin相同,函数存放在global中。
9. Models 的 field 的 help_text 用于显示提示
name = models.CharField(max_length=32, help_text='province name')
10. Many to Many Mapping
ManyToManyField存放位置,无所谓,但是一般可根据逻辑关系存放,例如 wine 和 certification, 一般情况下 wine 下有一个属性叫做certifications
Extra field on ManyToManyField, 在ManyToManyField上使用 through='membership'就OK了。
Recursive relationship, 使用 ForeighKey('self')就OK了。
11. Models 在存储前修改 field 的值
class Producer(models.Model):
name = models.CharField(max_length=64)
address = models.CharField(max_length=196)
def save(self, **kwargs):
self.name = self.name + self.address
super(Producer, self).save(**kwargs)
#end def save
TODO:
1. admin 的 action 操作,自定义
编写一个action 跳出 对话框,然后再选择后,确定后,再跳回来.
--功能:合并重复 ID 引用的记录 为第一个。
2. 权限控制 比较麻烦啊~~~,需要理解和测试
Permission 与 ContentType有关系。
Permission 可以自定义, 关于class Admin, 等等。
3. raw_id_fields,选择ID后,需要在旁边显示Value
4. 将admin 切换为中文,涉及多国语言设置
5. how to save the images into SinaApp : KVDB, Storage.
--》 KVDB --> value大小限制4M,
直接的Key-Value与wine需求相符合,而且访问比较方便
--》 Storage ,1个APP可以建立最多5个domain,每个domain最多只能有2G空间。
容量大点,但是还有限制,暂时OK。
django admin 密码丢失
manage.py changepassword username
6. sinaapp 上的权限划分问题。
7. Django + Ajax study
8. auto complete --> JQuery 插件
9. Tree View
1. Image Show/Save/Update/Insert
2. Custom the Tree View of some models list
3. Custom Search field(select field) of tbl_wine
4. Merge the Repeat Records