django admin为model字段添加动态选项

在工作中遇到一个需求,在admin后台创建某个数据库model的实例时某个字段需要实时地从别的接口获取选项,一开始直接用的model.Field里的choices参数,如下: from django.db import models from .utils import get_choices class Example(model.Model): text = models.CharField(choices=get_choices(), max_length=100, default="") 后来发现这样在admin后台创建新的实例时并不能获取到实时的choices,需要重启服务器后,choices才刷新,翻阅文档发现: Note that choices can be any iterable object – not necessarily a list or tuple. This…

django xadmin问题记录

python  :  3.5.2 django  :  2.0.5 1、安装 如果直接pip安装,安装的xadmin是python2的,因此需要从github安装: pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 2、修改xadmin后台的User模型样式 xadmin自身已经将User模型注册了,所以如果需要修改User模型在xadmin后台的样式,继承原有的类再做修改即可。以下是原有的类的源代码: class UserAdmin(object): change_user_password_template = None list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff') list_filter = ('is_…

Celery调用任务的方法delay()和apply_async()的区别

celey调用任务的其中两个方法,分别是delay()和apply_async()方法,例: @celery_app.task def test(): print('success') test.delay() test.apply_async() 在上述代码中,delay()和apply_async()的作用是一样的。那它们的区别是什么呢?可参考以下例子。 @celery_app.task def test(arg1, arg2, kwarg1=None, kwarg2=None): print('success') test.delay('a', 'b', kwarg1='x', kwarg2='y') test.apply_async(args=…