所以我有以下型號:動態增量整場 - Django的
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
在哪裏投票,我想通過一個在每一次點擊來增加屬性。
以下幾點看法:正在連載後
- 顯示在我的/ API/URL我的所有對象:
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'
在的意見,我在做兩件事情。使用外部JSON URL
{% 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中創建另一個功能?
謝謝你的時間。
您將需要創建一個表單是,呈現在您的模板。你會在你的視圖中捕捉它的提交,並增加投票計數器。您可以檢查如何處理在這裏https://docs.djangoproject.com/en/1.11/topics/class-based-views/generic-editing/ – Hisagr
'如果人[「身份證」]不是基於類的視圖中的形式[i.id for i in persons]:Person.vote + = 1 Person.save()'將是最快的方式,但您應該將一個用戶字段添加到模型中,以便您可以正確識別用戶。 – hansTheFranz