【发布时间】:2017-01-10 05:54:45
【问题描述】:
我正计划开发一款本地餐馆的送餐应用。我正在考虑最好的设计。我也为 API 建模设计了一个 json。但是我对菜单部分感到困惑。应该在餐厅用餐作为外键或餐厅在用餐中作为外键。
我的应用程序的简单概念是
一家餐厅准备各种餐点,为不同类型的顾客提供服务。一顿饭与类别相关联,例如一顿饭可以是蔬菜,也可以是非蔬菜。客户(用户)也可以点饮料。
我的模型设计和api设计适合这种场景吗?
class Restaurant(models.Model):
name = models.CharField()
slug = models.SlugField()
owner = models.ForeignKey(User)
location = models.CharField()
city = models.CharField()
features = models.ManyToManyField(FeatureChoice) # dinner, launch, nightlife,
timing = models.ManyToManyField(TimingChoice) # sunday, monday, tuesday,
is_delivery = models.BooleanField(default=True)
# meal = models.ForeignKey(Meal) main confusion is here
class Meal(models.Model):
restaurant = models.ForeignKey(User)
name = models.CharField()
price = models.FloatField()
quantity = models.PositiveIntegerField()
image = models.ImageField()
rating = models.IntegerField()
class MealCategory(models.Model)
meal = models.ForeignKey(Meal)
name = models.CharField()
slug = models.SlugField()
REST API 的 json 设计
[
{
'name':'Kathmandu Fast Food',
'owner':'Sanskar Shrestha',
'location':'Koteshwor',
'city':'Kathmandu',
'features':[
{
'features':'Breakfast'
},
{
'features':'Launch'
},
{
'features':'NightLife'
},
],
'timings':[
{
'timing':'MOnday'
},
{
'timing':'Sunday'
},
],
'is_delivery':'true',
'menu':[
{
'name':'Chicken BBQ',
'price':990,
'quantity':10,
'image':'localhost:8000/media/.../',
'category':{
'name':'Non-veg'
}
},
{
'name':'Veg Chowmin',
'price':160,
'quantity':20,
'image':'localhost:8000/media/',
'category':
{
'name':'Veg'
}
}
]
}
]
请分享您的专业知识。
【问题讨论】:
标签: python json django api django-models