PythonのDjangoでモデル同士の属性を繋げる(継承する)ためには?
今回はPythonのDjangoでモデル同士の属性を繋げる(継承する)方法についてご紹介いたします。
PythonのDjangoでモデル同士の属性を繋げる(継承する)ためには?
PythonのDjangoであるモデルの属性をそのまま引き継ぎたいときがありますよね?
いちいち書くのも問題ないですが、ださいですし何よりめんどくさいです。
実はDjangoのモデルでも継承という概念があります。
例として、次のモデル”Products”に"taking_over_description"と"limit_price"という二つの属性を加えてやりたいとします。
1 2 3 4 5 6 7 8 9 10 11 12 |
from django.db import models # Create your models here. class Product(models.Model): title = models.CharField(max_length=120) # max_length=required description = models.TextField(blank=True, null=True) price = models.DecimalField(decimal_places=2, max_digits=1000) summary = models.TextField(blank=False, null=False) featured = models.BooleanField(default=False) class Meta: verbose_name_plural="test_product" |
やり方は簡単で、Productのモデルを引数として新しいモデルを定義してやれば良いだけです。
次の例なら、
from products.models import Product
でProductをインポートして
class TakingOverProduct(Product):
とインポートしたProductを引数としてやればProductを継承したモデルを作成することができます。
1 2 3 4 5 6 7 |
from django.db import models from products.models import Product # Create your models here. class TakingOverProduct(Product): taking_over_description = models.TextField(blank=True, null=True) limit_price = models.DecimalField(decimal_places=2, max_digits=1000) |
以上がPythonのDjangoでモデル同士の属性を繋げる(継承する)方法です。
以上のようにやればリユーザブルなモデルをコーディングすることができます。
終わりに
今回はPythonのDjangoでモデル同士の属性を繋げる(継承する)方法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません