我有一个数据库,其中包含 50,000 种药物(药物)的元数据,这些元数据按层次结构排序(分类法称为 ATC)。心脏药物的例子如下:
A
-- A10
---- A10X、美托洛尔
有些药物有 4 个级别。
我需要为每种药物生成一个单独的页面。在 wagtail/django 中执行此操作最有效的方法是什么,包括考虑到用户需要一种简单直观的方式来搜索数据库。
我尝试过django-mptt,定义以下模型。
class ATCChapter(MPTTModel): # MAIN CHAPTER
chapter_letter = models.CharField(max_length=255, null=True, blank=True) # E.g "A"
chapter_title = models.CharField(max_length=255, null=True, blank=True) # E.g "Cardiac drugs"
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
class MPTTMeta:
order_insertion_by = ['chapter_letter']
class ATCSubchapter(MPTTModel): # SUBCHAPTER
subchapter_letter = models.CharField(max_length=255, null=True, blank=True) # E.g "A10"
subchapter_title = models.CharField(max_length=255, null=True, blank=True) # E.g "Drugs used in heart failure"
parent = TreeForeignKey(ATCChapter, on_delete=models.CASCADE, null=True, blank=True, related_name='subchapter')
class MPTTMeta:
order_insertion_by = ['subchapter_letter']
class ATCDrug(MPTTModel, Page): # INDIVIDUAL DRUG
drug_code = models.CharField(max_length=255, null=True, blank=True) # E.g "A10X"
drug_name = models.CharField(max_length=255, null=True, blank=True) # E.g "Metoprolol"
parent = TreeForeignKey(ATCSubchapter, on_delete=models.CASCADE, null=True, blank=True, related_name='disease')
class MPTTMeta:
order_insertion_by = ['drug_code']
进行迁移会引发以下错误:class ATCDrug(MPTTModel, Page): TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
这可以通过不让该类继承 Page 来解决,这当然是不好的。我删除了Page并尝试了模型,但无法验证父子方案是否正确。
问题:考虑到目标,我是否做了一些明显错误或次优的事情。
系统:Wagtail 2.10,Postgresql,计划使用Algolia进行搜索。
感谢您的任何建议。
浮云间
相关分类