gpt4 book ai didi

javascript - 动态递增整数字段 - Django

转载 作者:行者123 更新时间:2023-12-03 03:28:47 25 4
gpt4 key购买 nike

所以我有以下模型:

from django.db import models

class Person(models.Model):

name = models.CharField(max_length=254)
image_url = models.CharField(max_length=254)
title = models.CharField(max_length=254)
bio = models.CharField(max_length=20000)
vote = models.IntegerField(default=0)

def __str__(self):
return self.name

其中 Vote 是我希望在每次点击时加一的属性。

以下 View :

import json
from rest_framework.views import APIView
from rest_framework.response import Response
from urllib.request import urlopen
from .models import Person
from .serializers import PersonSerializer
from django.views.generic import ListView

class PersonApiView(APIView):
def get(self, request):
persons = Person.objects.all()
serializer = PersonSerializer(persons, many=True)
return Response(serializer.data)

class PersonView(ListView):
data = urlopen("<URL contatining JSON>").read()
json_persons = json.loads(data)
persons = Person.objects.all()
for person in json_persons:
if person['id'] not in [i.id for i in persons]:
Person.objects.create(id=person['id'],
name=person['name'],
image_url=person['image_url'],
title=person['title'],
bio=person['bio'])
model = Person
context_object_name = 'persons'

在 View 中,我正在做两件事:

  1. 在我的/api/URL 中显示序列化后的所有对象。
  2. 使用外部 JSON URL 创建对象

这就是我的 html 中的内容:

{% for person in persons %}
<div class="container">
<div ng-controller="mainController">
<div class="row">
<div class="col-xs-12 col-sm-5 col-md-4 col-lg-3">
<img ng-src="{{person.image_url}}"/>
</div>
<div class="col-xs-12 col-sm-7 col-md-8 col-lg-9">
<h2>{{ person.name }}</h2>
<h3>{{ person.title }}</h3>
<p>{{ person.bio }}</p>
<form method="POST">
<h4>Want to work with {{ person.name }}? <img src="{% static "svg/thumbs-up.svg" %}"><input type="submit" value="Yes!"></h4>
</form>
<h5><b>{{ person.vote }}</b> people have said Yes!</h5>
</div>
</div>
</div>
</div>
{% endfor %}

这是我显示所有信息的地方。

问题:

我想做的是能够点击<input>值为“是!”的标签,并具有 {{person.vote}}加一。当然,我想将其保存在数据库中。

使用ListView时如何实现此目的?或者我需要在我的views.py中创建另一个函数吗?

感谢您的宝贵时间。

最佳答案

就您的情况而言,您只需创建一个处理投票并将其重定向回 ListView 的函数 View 即可完成此任务。

类似于:

def process_vote(request, person_id):
person = get_object_or_404(Person, id=person_id)
person.vote = F('vote') + 1 # Using an F expression to avoid race conditions
person.save()
return redirect('list_view') # Redirect to anywhere

然后在您的表单上,将表单的操作参数设置为该 View url

关于javascript - 动态递增整数字段 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46187158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com