首页 > 解决方案 > 食物追踪器的基本数据模型

问题描述

我是数据建模的新手,正在尝试为简单的食物跟踪器开发 Django 模型。

你吃了什么?

一顿饭

原料

过敏原

当用户记录他们的食物、膳食和成分时,它会查找这些成分中的任何一种是否是已知的过敏原。什么是合适的数据模型?我的猜测如下。

from django.db import models
from django.conf import settings

class Meal(models.Model):      
    name = models.CharField(max_length=50)
    
    def __str__(self):
        return self.name


class Food(models.Model):
    date = models.DateTimeField()
    name = models.CharField(max_length=50)
    notes = models.TextField(max_length=200, null=True)
    meal = models.ForeignKey(Meal, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def __str__(self):
        return self.name


class Ingredient(models.Model):
    name = models.CharField(max_length=50)
    foods = models.ManyToManyField(Food)

    def __str__(self):
        return self.name


class Allergen(models.Model):
    name = models.CharField(max_length=50)
    
    def __str__(self):
        return self.name

    ingredients = models.ManyToManyField(Ingredient)

标签: djangodjango-models

解决方案


只需向 Ingrediant 模型添加一个 is_allergent 布尔字段。

将过敏视为 Ingrediant 的一个属性。它可能过敏或不过敏。


推荐阅读