我有两个类定义如下:
class Parent(models.Model)
# class definition第二类:
class Child(models.Manager):
def get_queryset(self):
pass现在,我想重写类父级的“对象”。通常情况是这样的:
class Parent():
objects = Child()但是我不能修改类父类,因为它是一个第三方库。这个问题有什么解决办法吗?
发布于 2018-03-05 10:25:10
setattr(Parent, 'objects', Child())将这一行写在文件的末尾,在其中有您的manager类。这将覆盖父类的对象属性(如果存在)或添加对象属性。示例:
from django.db import models
class abc(models.Model):
pass
class pqr(models.Manager):
def get_queryset(self, *args, **kwargs):
print('in get_queryset')
setattr(abc, 'objects', pqr())现在在shell中,获取或创建父类的对象,在本例中,、abc、类并对in执行任何操作。
a = abc()
a.objects.all(),但此方法是错误的,它将覆盖对象属性,如果要使用此方法,则使用与对象不同的属性名称。
https://stackoverflow.com/questions/49004906
复制相似问题