【问题标题】:How can I create two views function in a models Django如何在模型 Django 中创建两个视图函数
【发布时间】:2016-01-07 13:33:02
【问题描述】:

我正在制作一个美食网站。

当用户上传关于餐厅的评论时,

我想根据 Google Map API 保存用户输入的餐厅名称和位置。

所有信息都保存在 Restaurant 模型中

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>  

如果用户输入餐厅名称,会同时得到它的经纬度。

如果用户提交按钮,餐厅名称将保存在餐厅模型中。

我不明白如何同时保存这两个数据。

【问题讨论】:

    标签: python django django-models django-views


    【解决方案1】:

    如果我理解正确,您可以更新数据库中的一个实例,而不是再创建一个。您只需要使用 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 请求传递它。

    【讨论】:

    • 感谢您的帮助!我已经尝试了您的解决方案,但我仍然无法获得特定的餐厅 ID。希望您能给我一些解决方案。谢谢!
    • @haohao,好的,你想从哪里获取餐厅ID,你能提供更多详细信息吗?
    • @pythod,因为评论不能留下太多字,我已经对问题进行了编辑。也很抱歉我的英语不好,希望你能理解。
    猜你喜欢
    • 2020-02-26
    • 2016-11-04
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多