Skip to main content
 首页 » 编程设计

python之在 Django 中对外键对象进行排序

2025年02月15日30langtianya

我有一个包含两个主要类的模型。

第一个是书本模型,第二个是页面模型

这些页面有一个外键字段可以让我访问它们,但我很好奇的是,您将如何实现页码,以便在创建新的页面对象时,数量仅限于在当前页面长度?另外,如果插入的话,后面几页怎么往下移一页?

现在我只有一个整数字段,我手动输入页码,但如果我想让用户稍后自己添加页面,那是行不通的。

更新:

class Textbook(models.Model): 
    founder = models.CharField(max_length=256) 
    title = models.CharField(max_length=256) 
    cover = models.ImageField(upload_to=get_image_path,  
                              blank=True,  
                              null=True) 
 
    def __str__(self): 
        return self.title 
 
 
class Page(models.Model): 
    textbook = models.ForeignKey(Textbook, related_name="pages") 
    page_title = models.CharField(max_length = 256) 
 
    def __str__(self): 
        return self.page_title 
 
 
class Section(models.Model): 
    page = models.ForeignKey(Page,related_name="sections") 
    section_title = models.CharField(max_length=256) 
    text = RichTextField(config_name='awesome_ckeditor') 
 
    def __str__(self): 
        return self.section_title 

以上是我的模型,我想做的是让您可以按顺序跟踪包含在 TextBook 中的页面。此外,您可以插入新页面,页码将相应更改。因此,如果您说有第 1、2、3 页并想添加一个新页,则可以添加一个新页作为第 4 页,或者将其插入第 2 和第 3 页之间,之前的第 3 页变为第 4 页。

请您参考如下方法:

“order_with_respect”选项是否是您问题的答案:

https://docs.djangoproject.com/en/1.10/ref/models/options/#order-with-respect-to