我在Django项目中设置了第三方应用程序。有问题的模型是Tag模型。就像SO在问题下面有标记文本框一样,我想创建它们中的多个。如果你愿意,可以选择不同的课程。
示例:College_tag,department_tag,subject_tag等。
我知道修改第三方应用程序不是一个好主意所以我将扩展第三方APP的标签模型
同样在第三方应用程序中的“线程”模型与Tag有许多相似之处。
我要求的结果是“线程”模型应该有很多与College_tag,department_tag,subject_tag
此外,搜索应该是有效的。以前,我可以搜索标签。现在我应该可以在大学,系和科目上做到这一点。
- 我该如何设计?
- 这应该在不触及第三方代码的情况下完成。
醇>
答案 0 :(得分:2)
from django.db import models
from YourTagModel import Tag
from YourThreadModel import Thread
class College_tag(Tag):
pass
#all the fields in the model Tag will be inherited
class Department_tag(Tag):
pass
class MyThreadModel(Thread):
College_tag_relation = models.ManyToManyField(College_tag)
department_tag_relation = models.ManyToManyField(Department_tag)
这会在数据库映射中创建与Tag模型对象的关系,类似于一对一字段。但是django会像你期望继承一样对待它
答案 1 :(得分:1)
仅仅制作与Tag
具有一对一关系的另一个模型是否有效?即
from django.db import models
class TagProfile(models.Model):
tag = models.OneToOneField('taggit.tag')
# add your custom fields here
到目前为止,无需破解第三方应用程序的模型代码或数据库架构。
KISS