草庐IT

admin_init

全部标签

python - __init__.py 中的代码何时运行?

我已阅读文档,但有些内容我仍不确定。如果我这样做,是否会运行__init__.py中整个模块的所有初始化代码:frommymoduleimportmything或者只有当我这样做时importmymodule从__init__.py运行什么以及何时运行?我相信我也可以相当容易地测试这个,但为了后代和对其他人的帮助,我想我会在这里问。 最佳答案 __init__.py中的代码会在您从包中导入anything时运行。这包括在该包中导入其他模块。导入的样式(importpackagename或frompackagenameimportso

Python 多继承,__init__

关于多父继承,当我调用super.__init__时,为什么没有调用parent2的__init__函数?谢谢。classparent(object):var1=1var2=2def__init__(self,x=1,y=2):self.var1=xself.var2=yclassparent2(object):var4=11var5=12def__init__(self,x=3,y=4):self.var4=xself.var5=ydefparprint(self):printself.var4printself.var5classchild(parent,parent2):var3

python - Django admin - 使所有字段只读

我正在尝试将所有字段设为只读而不明确列出它们。类似:classCustomAdmin(admin.ModelAdmin):defget_readonly_fields(self,request,obj=None):ifrequest.user.is_superuser:returnself.readonly_fieldsreturnself.fields问题是CustomAdmin.fields此时没有设置。有什么想法吗? 最佳答案 从django2.1开始,您可以通过从ModelAdmin的has_change_permissio

python - `__init__` 能做什么而 `__new__` 不能?

在Python中,__new__用于初始化不可变类型,__init__通常用于初始化可变类型。如果__init__从语言中删除,什么不能再做(容易)?例如,classA:def__init__(self,*,x,**kwargs):super().__init__(**kwargs)self.x=xclassB(A):def__init__(self,y=2,**kwargs):super().__init__(**kwargs)self.y=y可以像这样使用__new__重写:classA_N:def__new__(cls,*,x,**kwargs):obj=super().__ne

python - 模块导入和 __init__.py

我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目已经开始增长,可以说我的代码组织如下:foo/__init__.pyFoo.pymodule1.pymodule2.pymodule3.py包名是foo,在它下面我有模块Foo.py,它包含Foo类的代码。因此,我对包、模块和类使用相同的名称,这可能不是很聪明。__init__.py是空的,类Foo需要导入module1、module2和module3因此是我的Foo.py的一部分文件看起来像:#foo/Foo.pyimportmodule1importmodule2importmodule3classFoo(obj

python - 如何使具有多个 init args 的自定义异常类可腌制

为什么我下面的自定义异常类没有使用pickle模块正确序列化/反序列化?importpickleclassMyException(Exception):def__init__(self,arg1,arg2):self.arg1=arg1self.arg2=arg2super(MyException,self).__init__(arg1)e=MyException("foo","bar")str=pickle.dumps(e)obj=pickle.loads(str)此代码引发以下错误:Traceback(mostrecentcalllast):File"test.py",line13

python - 每次在 Python 中的类中是否有必要将 __init__ 作为第一个函数?

在Python中,我想知道在创建类时是否需要包含__init__作为第一个方法,如下例所示:classExampleClass:def__init__(self,some_message):self.message=some_messageprint"NewClassinstancecreated,withmessage:"printself.message另外,为什么我们使用self来调用方法?谁能详细解释一下“self”的用法?另外,为什么我们在Python中使用pass语句? 最佳答案 不,没必要。例如。classA(obje

python - 如何在 Django Admin 中设置另一个内联标题?

我需要将inlinetitle更改为模型中Meta类的verbose_name以外的其他内容。有没有实现这个的属性? 最佳答案 如文档所述,您需要设置InlineModelAdmin子类的值:InlineModelAdmin.verbose_name-覆盖模型内部Meta类中的verbose_name。InlineModelAdmin.verbose_name_plural-覆盖模型内部Meta类中的verbose_name_plural。在本例中,我们使用“电话”代替标题“设备”:classDeviceInline(admin.T

python - 在 Django admin 中覆盖表单

在Django管理中,我想为模型(例如发票模型)覆盖并实现我自己的表单。我希望发票表单具有客户名称、产品名称的自动填充字段,并且我还希望进行自定义验证(例如客户的信用额度)。如何覆盖Django管理员提供的默认表单并实现我自己的?我是Django新手,感谢任何指点。 最佳答案 您可以通过将ModelAdmin的表单属性设置为您自己的表单类来覆盖django内置管理员的表单。见:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.M

Python - 覆盖 __init__ 的最干净方法,其中在 super() 调用之后必须使用可选的 kwarg?

我喜欢Python的美丽外观/感觉,我希望这可以更简洁(可读性很棒)。在覆盖子类init时,接受可选关键字参数的简洁方法是什么,其中可选的kwarg必须在super()之后使用称呼?我有一个django表单,我想接受一个可选的用户参数,但如果我将它定义为参数之一user=None,然后通常的形式调用form({})假设位置参数是指关键字参数user.代码胜于(我的)话:def__init__(self,*args,**kwargs):user=Noneif'user'inkwargs:user=kwargs.pop('user')super(BaseCheckoutForm,self)