[英]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.