Django mptt,我可以删除默认的 'name' 归档吗?

Django mptt, can I delete the default 'name' filed?

我正在学习 django-mptt 教程,并且有一个 'name' 归档:

class Genre(MPTTModel):
    name = models.CharField(max_length=50, unique=True)
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

    class MPTTMeta:
        order_insertion_by = ['name']

与我自己的模型比较:

class Comment(MPTTModel):
    """
    评论表
    """
    name = models.CharField(max_length=1500, unique=True,)
    nid = models.AutoField(primary_key=True)
    news = models.ForeignKey(verbose_name='评论文章', to='News',to_field='id',on_delete=models.CASCADE)
    user = models.ForeignKey(verbose_name='评论者', to='User',to_field='id',on_delete=models.CASCADE)
    content = models.CharField(verbose_name='评论内容', max_length=255)
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

    class MPTTMeta:
        order_insertion_by = ['name']

这个 'name' 文件真的很困扰我,因为每次我都需要添加这个文件。

我的问题是我可以隐藏或忽略这个文件吗?

删除名称字段时出现错误的原因是 order_insertion_by option [readthedocs.io] 指的是该字段。但是你可以让它引用另一个字段。正如文档所说:

order_insertion_by

A list of field names which should define ordering when new tree nodes are being inserted or existing nodes are being reparented, with the most significant ordering field name first. Defaults to [].

It is assumed that any field identified as defining ordering will never be NULL in the database.

因此,例如,您可以改用主键:

class Genre(MPTTModel):
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

    class MPTTMeta:
        order_insertion_by = <b>['pk']</b>