所以我想得到Secondobject
首先是一对一。
class Firstobject(models.Model):
(...)
def save(self,*args,**kwargs):
super().save(*args,**kwargs)
Second.objects.get_or_create(first=self)
class Votes(models.Model):
(...)
first = models.OneToOneField(First)
def save(self,*args,**kwargs):
self.value2 = self.value - self.value2
super().save(*args,**kwargs)
def __str__(self):
return "%s name" % self.first
def function(request, pk):
pk = request.GET.get('pk')
obj = models.First.objects.get(pk=pk)
votes = obj.Second
votes.value = votes.value + 1
votes.save()
data = {'val1':votes.value, 'val2':votes.value2}
return JsonResponse(data)
<button
data-url="{% url 'first:link' pk=first.pk %}"
data-pk="{{first.pk}}"></button>
$('button').click(function() {
var pk = $(this).attr("data-pk");
var urla = $(this).attr("data-url"); //
$.ajax({
url : urla,
data : {'pk' : pk},
success : function(data) {
$('#ID1' + pk).text(data.val1)
$('#ID2' + pk).text(data.val2)}
});
});
所以我的错误是:
/ link / 5 /中的AttributeError'第一个'对象没有属性'Second'
我知道错误是什么,但我无法弄清楚如何解决它
错误在views.py中。我不能First.Second
。所以你能告诉我应该用什么方法吗?
答案 0 :(得分:1)
first = models.OneToOneField(First, related_name="second")
然后你可以做
obj = models.First.objects.get(pk=pk)
votes = obj.second
答案 1 :(得分:0)
要在django中访问onetoone
关系,您可以通过引用它的类的小写名称从父模型类obj访问,除非指定了exclusive related_name,
from django.db.models import F
obj = models.First.objects.get(pk=pk)
votes = obj.votes
votes.value = F('value') + 1
votes.save()
F运算符有助于增加值,因为它反映了db的当前状态。