小编Bri*_*ian的帖子

抽象基类的Django模型字段

我已经搜索了堆栈溢出来寻找这个(可能是简单的)问题的答案,但我看到的大多数解决方案看起来都过于复杂且难以理解.

我有一个模型"Post",它是一个抽象的基类.模型"公告"和"事件"继承自Post.

现在我在其他模型中保留相关的事件和公告列表.例如,我在另一个模型中有"removed_events"和"removed_announcements"字段.

但是,在我的项目中,"removed_events"和"removed_announcements"的处理方式完全相同.没有必要消除"删除的事件"和"删除的公告"之间的歧义.换句话说,保持跟踪"removed_posts"的字段就足够了.

我不知道如何(或许不能)创建一个字段"removed_posts",因为Post是抽象的.但是,现在我觉得我在代码中重复自己(并且不得不做一些混乱 - 一些检查以确定我正在看的帖子是一个事件还是一个公告并将其添加到相应的删除字段).

这里最好的选择是什么?我可以使Posts非抽象,但Post对象本身永远不应该创建,我不认为我可以在非抽象对象上强制执行.

我对数据库的理解很薄弱,但我的印象是,由于连接,使Post非抽象会使数据库复杂化.这是一个大问题吗?

最后,在其他模型中还有其他字段,我想将event_list和announcement_list中的内容压缩到post_list中,但这些字段确实需要消除歧义.我可以根据帖子类型过滤post_list,但是对filter()的调用比单独直接访问事件和公告列表要慢,不是吗?这里有什么建议?

非常感谢您阅读本文.

django class base abstract django-queryset

14
推荐指数
2
解决办法
5583
查看次数

标签 统计

abstract ×1

base ×1

class ×1

django ×1

django-queryset ×1