TIL#34-2 Django-DBスターバックス


🐶 中に入ると


スタバに応用しましょう!!
ただし、CharField(image url)に画像を適用する
注意:tool(画像を入れて入れるかどうかをチェック!)

models.pyの作成

class Menu(models.Model):
        name                    = models.CharField(max_length=10)

        def __str__(self):
            return f'{self.name}'

        class Meta:
            db_table = 'Menu'

class Categories(models.Model):
        Menu                    = models.ForeignKey('Menu', on_delete=models.CASCADE)
        name                    = models.CharField(max_length=50)

        def __str__(self):
            return f'{self.name}'

        class Meta:
            db_table = 'Categories'

class Product(models.Model):
        name                    = models.CharField(max_length=50)
        name_en                 = models.CharField(max_length=50, null=True)
        description             = models.CharField(max_length=1000)
#       price                   = models.CharField(max_length=1000, null=True)
#       MENU                    = models.ForeignKey('Menu', on_delete = models.SET_NULL, null=True)
        category                = models.ForeignKey('Categories', on_delete = models.SET_NULL, null=True)
#       allergy_drink           = models.ManyToManyField('Allergy', through='AllergyDrink')
        description             = models.CharField(max_length=100, null=True)
        is_new                  = models.BooleanField(default=False)

        def __str__(self):
                return f'{self.name}'

        class Meta:
                db_table = 'products'

class Nutrition(models.Model):
        product                 = models.OneToOneField('Product', on_delete=models.CASCADE, null=True)
        one_serving_kca         = models.DecimalField(max_digits=6, decimal_places=2, null=True)
        sodium_mg               = models.DecimalField(max_digits=6, decimal_places=2, null=True)
        saturated_fat_g         = models.DecimalField(max_digits=6, decimal_places=2, null=True)
        sugars_g                = models.DecimalField(max_digits=6, decimal_places=2, null=True)
        protein_g               = models.DecimalField(max_digits=6, decimal_places=2, null=True)
        caffeine_mg             = models.DecimalField(max_digits=6, decimal_places=2, null=True)
        size_ml                 = models.CharField(max_length=10, null=True)
        size_fluid_ounce        = models.CharField(max_length=10, null=True)

        class Meta:
                db_table = 'nutritions'

class Allergy(models.Model):
        name                    = models.CharField(max_length=10, null=True)

        def __str__(self):
                return f'{self.name}'

        class Meta:
                db_table = 'allergy'

class AllergyDrink(models.Model):
        allergy                 = models.ForeignKey('Allergy', on_delete=models.CASCADE, null=True)
        product                 = models.ForeignKey('Product', on_delete=models.CASCADE, null=True)

        class Meta:
                db_table = 'allergy_drink'

class Images(models.Model):
        image_url               = models.CharField(max_length=2000, null=True)
        product                 = models.ForeignKey('Product', on_delete=models.CASCADE, null=True)

        class Meta:
                db_table = 'images'
1つ目を除いて、2つ目から追加されるのはnull=trueです.

テーブルの作成の決定



Django shell : create & update



完了!



^_____^
画像はホームページにアクセスしてurlを取得する必要があるので、後ですることにしました.

もっと作りやすい方法があれば、それを使ってやり直します...やってみよう...