如何解决如何在递归关系中设置动态关系
在这段代码中
class Topic(models.Model):
title = models.CharField(max_length=100)
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
rel = models.ManyToManyField('self',related_name='topics',related_query_name='topic',blank=True)
如果我们有 3 种关系,例如 sub mid supper。 我想说
如果主题 2 是主题 1 的中间,那么它们之间的关系是中间的 和 如果 topic2 是 topic1 的 sub 则 topic1 是 topic2 的 supper
我怎样才能做到这一点?
解决方法
我发现我可以使用 through 为多对多领域的关系创建新类。新班级应该得到 2
class Topic(models.Model):
title = models.CharField(max_length=100)
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
related_topics = models.ManyToManyField('self',symmetrical=False,through='TopicRelationship',blank=True)
def __str__(self):
return self.title
为了关系
class TopicRelationship(models.Model):
topic1 = models.ForeignKey(Topic,related_name='topic1')
topic2 = models.ForeignKey(Topic,related_name='topic2')
REL_TYPES = [
('sub','sub_topic'),('mid','mid_topic'),]
rel_type = models.CharField(max_length=3,choices=REL_TYPES,blank=True)
class Meta:
unique_together = ('topic1','topic2')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。