簡體   English   中英

Django mptt,我可以刪除默認的“名稱”歸檔嗎?

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

我正在關注 django-mptt 教程,並且有一個“名稱”歸檔:

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']

與我自己的 model 相比:

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選項 [readthedocs.io]引用了該字段。 但是你可以讓它引用另一個字段。 正如文檔所說:

order_insertion_by

字段名稱列表,當插入新的樹節點或重新設置現有節點時,應定義排序,最重要的排序字段名稱在前。 默認為[]

假定任何標識為定義排序的字段在數據庫中永遠不會是 NULL。

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

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

    class MPTTMeta:
        order_insertion_by = ['pk']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM