2017-07-07 7 views
1

マシンの設定を変更するためのアプリを書いているとします。私は以下のように3つのテーブルを作成しました。マシン設定は、マシンの現在の設定状態を表示します。ユーザーはチケットを作成して構成の変更を要求できます。 RequestDetailsは、提案された構成にリクエスタの名前、日付などの追加情報を加えたものになります。クラスをdjangoモデルの別のクラスの一部として使用する

これらのクラスは実際のモデルではほぼ600+ fields = configuration MachineConfigurationクラスで提示されます。私は、RequestDetailsクラスでも同じフィールドを持っているはずです。 MachineConfigurationモデルに存在するすべてのフィールドについてRequestDetailsクラスを定義するときに、自分自身を繰り返さない方法があるのだろうかと思っていましたか?

MachineConfigurationテーブルで何かを変更した場合、同じ変更がRequestDetailsテーブルにも適用されるように記述します。

ご協力いただきありがとうございます。

class RequestTicket(models.Model): 
    subject=models.CharField(max_length=50, null=False, blank=False) 
    description=models.TextField(null=False, blank=True) 

class MachineConfiguration(models.Model): 
    field_1 = models.CharField(null=False,blank=True) 
    field_2 = models.CharField(null=False, blank=True) 
    field_3 = models.CharField(null=False, blank=True) 

class RequestDetails(models.Model): 
    tracking_number=models.ForeignKey('RequestTicket') 
    field_A=models.DateField(null=True, blank=False) 
    field_B=models.TextField(null=True, blank=False) 
    field_1 = models.CharField(null=False, blank=True) 
    field_2 = models.CharField(null=False, blank=True) 
    field_3 = models.CharField(null=False, blank=True) 

答えて

1

私は

# Now if you change any field in BaseModel, it will reflect in both the models 
class MachineConfiguration(BaseModel): 
    pass 

class RequestDetails(BaseModel): 
    field3 = models.CharField() 
+0

、はいあなたは、基本クラスを作成することができるなど、別のクラスにそのクラスを継承し、

class BaseModel(models.Model): field1 = models.CharField() field2 = models.CharField() class Meta: abstract = True 

そして、それらの同じフィールドを取得するために、別のモデルでは、このクラスを継承その場合、NewModelクラスはfield3のみを持つテーブルを作成し、field2はテーブルBaseModelに作成されます。これは私が望むものではありません。私は各テーブルのすべてのフィールドを持つ両方のテーブルを作成したいと思います。これらの2つのテーブルは、互いに独立していなければなりません。私は、フィールド1とフィールド2を指しているNewModelのポインタフィールドを持っていないと思います。 – Ibo

+0

抽象的な= Trueの場合、djangoはクラスのテーブルを作成しません。これは私が望むものではありません。私は両方のクラスのテーブルを作成する必要があります。これについては、djangoのマニュアルを参照してください:https://docs.djangoproject.com/en/1.11/topics/db/models/#abstract-base-classes – Ibo

+0

これは私が答えで言ったものです。 3つの同じフィールドを持つ5つのモデルを作成したい場合、dbテーブルを作成するモデルでこのモデルを継承します。 – Aniket

関連する問題