2016-09-02 6 views
0

地元のレストランから食品配送アプリを開発する予定です。私は最高のデザインを考えています。私はAPIをモデル化するためにjsonも設計しました。しかし、私はメニューの部分と混同しています。外国人のキーやレストランとしての食事は、食事中の外来人でなければなりません。私のアプリのレストラン、食事、食事のカテゴリのモデルデザイン

シンプルなコンセプトは

レストランでは、顧客の様々な種類を提供するために、様々な食事を準備しています。食事は、食事のようなカテゴリに関連付けられています、veg、非vegすることができます。顧客(ユーザー)も飲み物を注文することがあります。

私のモデルデザインとAPIデザインは、このようなシナリオに適していますか? REST 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() 

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' 
         } 
       } 
      ] 
     } 
] 

あなたの専門知識の考えを共有して行ってください。

答えて

0

MealはMealCategoryをForeignKeyとして持つべきです。 Mealはレストランから独立したモデルであると私は思う。特定のレストランでの食事についてのデータを保存するために別のモデル

class RestaurantMeal(models.Model): 
    restaurant = models.ForeignKey(Restaurant) 
    meal = models.ForeignKey(Meal) 

を追加すると思います。あなたはrestaurant = models.ForeignKey('Restaurant')

  • MealCategoryを持たなければならないときにMealモデルでrestaurant = models.ForeignKey(User)を持っていないのはなぜ

  • +0

    ご回答ありがとうございます。私のJsonはどうですか?そのデザインはよさそうですか?より良いサービスのためにレストラン、食事、食事のカテゴリーをカバーするのにもっと多くのものがあるはずだと思いますか? – Serenity

    +0

    私の意見では、JSONはうまく見えますが、私はただ1つのことを変更します:機能とタイミングでは、機能/タイミングのリストはdictsのリストではなく戻ります – Abdulafaja

    +0

    機能とタイミングのリストを返すにはどうすればよいですか?私はDjango Rest Frameworkで作業しなければなりませんか?あなたはヒントを提供できますか? – Serenity

    0
    1. MealMealCategoryに属している必要があり、逆に、Mealに属さない、独立していなければなりません。
    2. priceフィールドはなぜ整数ratingDecimal
    3. あるんすべきですか?これまで定格の整数を見たことがありますか?一人の人がそれを評価した場合に限り整数です。

      class Meal(models.Model): 
          restaurant = models.ForeignKey('Restaurant') 
          name = models.CharField() 
          price = models.DecimalField() 
          quantity = models.PositiveIntegerField() 
          image = models.ImageField() 
          rating = models.FloatField() 
          meal_category = models.ForeignKey('MealCategory') 
      
      
      class MealCategory(models.Model): 
          name = models.CharField() 
          slug = models.SlugField() 
      
    +0

    最初のポイントは、そのタイプミスです。 3番目の点について、私はIntegerFieldを書くつもりだったが、FloatFieldを書いた。価格がドルで表示されている場合、Decimalは素晴らしいでしょうが、ネパールの通貨では整数が機能します。他の点については、問題を解決するために多くのありがとう。 – Serenity