簡體   English   中英

如何在模型Django中創建兩個視圖函數

[英]How can I create two views function in a models Django

我正在制作食品網站。

當用戶上傳有關餐廳的評論時,

我想根據Google Map API保存用戶鍵入的餐廳名稱和位置。

信息全部保存在餐廳模型中

class Restaurant(models.Model):
    restaurant_id = models.CharField(max_length=20, primary_key=True)
    name = models.CharField(max_length=200)
    longitude = models.CharField(max_length=200)
    latitude = models.CharField(max_length=200)

    def __str__(self):
        return  self.name.encode('utf-8', errors='replace')

我有兩個視圖功能來保存數據。

我使用Ajax獲取職位數據

def position(request):
   if request.method == 'GET':
      local_lat = request.GET['latitude']
      local_lng = request.GET['longitude']

      Restaurant.objects.create(
        latitude = local_lat,
        longitude =local_lng,
      )

   return HttpResponse(lat)

並使用創建視圖功能獲取用戶發布的餐廳名稱

def create(request):
    if request.method == 'POST':
        local_form = AddForm(request.POST,request.FILES)

        if local_form.is_valid():
            local_restaurant = local_form.data.get("restaurant")
            local_restaurant_id = str(len(Restaurant.objects.all()) + 1)

            Restaurant.objects.create(
                restaurant_id = local_restaurant_id,
                name = local_restaurant,
            )
        return render(request, 'index.html')    

    else:
        local_form = AddForm(request.POST)
        return render(request, 'create_meal.html',)

else:
    return render(request, 'create_meal.html',)

但是,我不能真正將數據保存到數據庫中,因為我使用兩個視圖函數來創建相同的模型。

我該如何解決?

================添加================

在我的html文件中,我具有用戶輸入其餐廳的表格

<form id="add-meal-form" class="form" action="#" method="POST" role="form" >

        {% csrf_token %}
        {{ form.as_p }}                    
    <div class="form-group">
        <input type="text" class="form-control " id="restaurant" name="restaurant" >
    </div> 

    <div class="form-group">
         <input type="text" class="form-control " id="meal" name="meal" >
    </div>

    <div class="text-center">
         <button type="submit" id="send" class="btn btn-primary" href="/">Submit</button>  
    </div>

</form>  

如果用戶輸入餐廳名稱,它將同時獲得其經度和緯度。

如果用戶提交按鈕,則餐廳名稱將保存在餐廳模型中。

我不明白如何同時保存這兩個數據。

如果我理解正確,則可以更新數據庫中的一個實例,而無需再創建一個。 您所需要做的就是使用pk訪問實例:

restaurant = Restaurant.objects.get(restaurant_id=some_id)

然后更新它:

restaurant.latitude = local_lat
restaurant.longitude = local_lng

然后保存:

restaurant.save()

您現在只需考慮的是如何將some_id傳遞到更新視圖。 如果您使用Ajax,則可能可以使用HTML data屬性執行此操作,然后使用javascript獲取並通過ajax請求將其傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM