python 不同父模型的Django-MPTT

mnemlml8  于 2023-04-28  发布在  Python
关注(0)|答案(1)|浏览(96)

我正在向现有应用程序添加一个新功能。这项新功能将告知用户如何通过收集徽章获得奖励。应用程序将显示如何获得奖励(我计划使用Django-mptt或Django-treebeard?)).
例如,为了获得奖励A,用户需要收集如下标志:
— Award A:
— Emblem AA
— Emblem BB:
— Emblem CC
— Emblem DD
每个标志都是独一无二的。
下面是现有应用程序的模型。

class EmblemClass(models.Model):  
    user = models.ForeignKey(User, blank=False, null=False, on_delete=models.CASCADE, related_name=“emblemclasses”)   
    name = models.CharField(max_length=255)   
    image = models.FileField(upload_to=‘images’, blank=True)  
    description = models.TextField(blank=True, null=True, default=None)

下面是我将要制作的模型:

class AwardInfoClass(models.Model):  
    user = models.ForeignKey(User, blank=False, null=False, on_delete=models.CASCADE, related_name=“awardinfoclasses”)  
    name = models.CharField(max_length=255)   
    description = models.TextField(blank=True, null=True, default=None)

class AwardAlignmentClass(models.Model):   
    awardinfoclass = models.ForeignKey(AwardInfoClass, on_delete=models.CASCADE)   
    award_name = models.ForeignKey(Emblem, on_delete=models.CASCADE)   
    award_parent = models.ForeignKey(Emblem, related_name='emblemclasses', blank=True, null=True, on_delete=models.CASCADE)

在Django-mptt的文档中,'award_parent'被设置为'self',而不是来自不同的模型。我使用邻接表来设计树和扩展现有的应用程序。我是不是做错了模型设计?
我尝试过手动使用Django-mptt库。但是,我在编辑孩子和制作视图方面有一个问题。我认为使用现有的库来创建这样一种信息树会更容易。
有什么想法或建议吗?谢谢大家。

c90pui9n

c90pui9n1#

这个工作会试试吗这个代码是

  • 徽章AA
— Emblem BB:
  — Emblem CC
   — Emblem DD   

from mptt.models import MPTTModel , TreeForeignKey ,TreeManager

class EmblemClass(models.Model):  
    user = TreeForeignKey('self', on_delete=models.CASCADE,blank=True,null=True, related_name=“emblemclasses”)   
    name = models.CharField(max_length=255)   
    image = models.FileField(upload_to=‘images’, blank=True)  
    description = models.TextField(blank=True, null=True, default=None)

相关问题