次のような 2 つのマルチテーブル継承モデルがあります。
class Post(models.Model):
title = models.CharField(max_length=100, blank=True, null=True)
text = models.TextField(blank=True, null=True)
location = models.PointField()
...
class BlogPost(Post):
blog = models.ForeignKey(Blog)
同様に、BlogPost のフォーム クラスも PostForm クラスを継承しています。
class PostForm(MapModelForm):
...
class Meta:
model = Post
def clean(self):
...
class BlogPostForm(PostForm):
class Meta:
model = BlogPost
以前は、2 つの非クラスベースのビューで両方のモデルの作成/更新を処理していました。DRY にするために、Django のクラスベースのジェネリック ビューを試してみることにしました。しかし、例がなく、関連するドキュメントやさまざまなアプローチのユーザーの不親切さのために、私は混乱しています。
アイデアは、Post
モデルのクラス ベースのフォーム ビューを持ち、BlogPost
. ビュークラスをどのように調整すればよいですか?
PostCreate ビューと PostUpdate ビューを別々にする必要がありますか? その場合、2 つのクラスはほぼ同一であり、DRY ではありません。
FormView
投稿の更新と作成の両方に単一のものを使用する必要がありますか? 作成には機能しますが、更新のためにこれを行う方法がわかりませんでした。
ビューから直接継承するのではなく、提供された mixin クラスを使用してカスタム ビュー (または作成/更新用の 2 つのビュー) を構築する必要がありますか?