这与this question中提出的问题有些关系,但我试图用一个抽象基类来实现这一点。在
在本例中,我们使用以下模型:
class Comic(models.Model):
name = models.CharField(max_length=20)
desc = models.CharField(max_length=100)
volume = models.IntegerField()
... <50 other things that make up a Comic>
class Meta:
abstract = True
class InkedComic(Comic):
lines = models.IntegerField()
class ColoredComic(Comic):
colored = models.BooleanField(default=False)
在视图中,假设我们得到了一个对InkedComic id
的引用,因为跟踪器,呃,我的意思是,墨水器已经画好了线条,是时候添加颜色了。一旦视图添加了所有的颜色,我们要将ColoredComic
保存到数据库中。在
显然我们能做到
^{pr2}$但真的很好:
colored = ColoredComic(inked_comic=inked)
colored.colored = True
colored.save()
我试着去做
class ColoredComic(Comic):
colored = models.BooleanField(default=False)
def __init__(self, inked_comic = False, *args, **kwargs):
super(ColoredComic, self).__init__(*args, **kwargs)
if inked_comic:
self.__dict__.update(inked_comic.__dict__)
self.__dict__.update({'id': None}) # Remove pk field value
但是ColoredComic.objects.get(pk=1)
调用将pk
插入inked_comic
关键字,这显然不是有意的。(实际结果是int
没有dict
异常)
我的大脑在这一点上被炸了,我是错过了一些明显的东西,还是有更好的方法?在
在类上使用一个静态方法来处理这个问题呢?在
未测试,但与此相关(使用上面的代码)
^{pr2}$对于这个简单的例子,这将起作用:
相关问题 更多 >
编程相关推荐