私は2つの主要なクラスを持つモデルを持っています。DjangoのForiegnKeyオブジェクトの並べ替え
最初は本モデルであり、第二は、ページモデルである
ページは私がそれらにアクセスすることができますブックに外部キーフィールドを持っていますが、私は好奇心だことはどのようにページ番号を実装し、あります新しいページオブジェクトを作成するときに、その数は現在のページの長さ内にのみ制限されますか?さらに、それが挿入されている場合、次のページを1つ下にシフトしますか?
今、私は手動でページ番号に入力する整数フィールドを持っていますが、ユーザーが後でページを自分自身で追加できるようにしたい場合、それはできません。
更新:だから、上記の
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になります。
どのデータベースを使用していますか? postgresの場合は、ページをjsonフィールドとして実装する方がよいでしょう。 –
だから... 'deque'の種類?私の最初の "素朴な"答えは2つのself-'ForeignKey'と巧妙な 'save()'関数ですが、* thud *は "もっと良い方法が必要です"。 JSONベースのソリューションを使用する方法もありますが、何をするかによって問題になる可能性があります。 –
@RaphaëlGomèsそれは私が考えたことです。しかし、私はより良い方法が必要であることに同意します。 sqlite(私が今使っているもの)からJSONに変換するのは簡単ですか? – Peter