2017-01-20 17 views
0

私はDjangoプロジェクトに取り組んでいます。アプリケーション管理パネルから既存のデータベースに新しいテーブルを追加するには特定のユーザーが必要です。ユーザーが時間をかけてアプリケーションに追加したい製品の特異性を知らないので、「新しいカテゴリを追加」をクリックするだけで、データベース内の新しいテーブルの名前となり、カテゴリパラメータを追加することができます(column 「保存」をクリックすると、実行中のアプリケーションのデータベースにそのテーブルが追加され、他のカテゴリのユーザーは「カテゴリパラメータ」のデータを提供することでこのカテゴリに製品を追加することができます。Djangoアプリケーションでデータベースに新しいテーブルを追加する方法

私はdjangoでそれを行う方法がわからないので、私は親切にあなたの助けを求める。

+0

通常、新しいテーブルを追加するのは恐ろしいことです。あなたが望むのはおそらく、カテゴリと呼ばれるテーブルに行を追加し、次にカテゴリパラメータを保持する別のテーブルを持つことです。 –

+0

@Dave Plug新しいテーブルを追加することは必ずしも悪い考えではありませんが、この場合は正しい選択ではありません。 –

答えて

1

すべてのカテゴリに新しいテーブルを追加したいとは思いません。その代わり、Categoryモデルへの外部キーでProductモデルを使用します。

class Category(models.Model): 
    name = models.CharField(max_length=100) 

class Product(models.Model): 
    name = models.CharField(max_length=100) 
    category = models.ForeignKey(Category, on_delete=models.PROTECT) 

この方法は、新しい「テーブル」を追加するとCategoryテーブルに新しい行を入力するだけです。カテゴリをユーザーに制限する場合は、Categoryモデルにcreated_byフィールドを追加し、その上にアクセスロジックを設定することができます。

外部キーのon_delete=models.PROTECTは、そのカテゴリを使用する製品が存在する限り、カテゴリを削除できないことに注意してください。

+0

ありがとう、今日はよく考えていないようです。解決策は明らかでしたが、他に助けが必要でした。もう一度あなたに感謝し、そのような簡単な質問に気をつけて申し訳ありません。 – Uzzy

+0

@Uzzy心配しないでください、それは誰にも起こります:) –

関連する問題