如何从 Django 数据库追加查询对象?
How to append queried objects from Django database?
我有一个包含 2 个数字字段的模型。我正在尝试查询这些数字并将它们附加到彼此。我怎么做?如何处理查询对象?
这是模特
class Post(models.Model):
title = models.CharField(max_length=100)
num1 = models.IntegerField(blank=True,default=0)
num2 = models.IntegerField(blank=True,default=0)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('diary:post-detail', kwargs={'pk': self.pk})
这是视图(我在这里尝试查询和处理查询的对象)
def home(request):
a = Post.objects.values('num1')
b = Post.objects.values('num2')
result = a + b
context = {
'result': result,
}
return render(request, 'diary/home.html', context)
这是我模板的工作部分
{% for x in result %}
<p> {{ x }} </p>
{% endfor %}
这是我得到的错误
TypeError at /
unsupported operand type(s) for +: 'QuerySet' and 'QuerySet'
C:\Users\detal\Coding\Trading Diary3\TradingDiary\diary\views.py, line 11, in home
result = a + b
您查询的 return 将是字典。要添加这两个查询,您可以尝试
result = q.union(b)
更简洁的外观
records = query1 | query2
如果您不想重复,请添加 .distinct()
records = (query1 | query2).distinct()
如果你只想要特定的字段,你可以尝试
Post.objects.all().values_list(
"num2").union(Post1.objects.all().values_list("num1"))
或者如果它来自同一个 table
Post1.objects.all().values_list("num1","num2"))
我解决了。这是我的查看代码:
def home(request):
x = Post.objects.all().values_list("num1","num2")
array = []
for i in x:
y = i[0] + i[1]
array.append(y)
context = {
'posts': Post.objects.all(),
'array':array,
}
return render(request, 'diary/home.html', context)
和模板代码:
{% for i in array %}
<p> {{ i }} </p>
{% endfor %}
输出是num1和num2的附加数字列表。解决时我也遇到了问题 - 你不需要“return” for 循环结果在视图中。它只在没有它的情况下工作
我有一个包含 2 个数字字段的模型。我正在尝试查询这些数字并将它们附加到彼此。我怎么做?如何处理查询对象?
这是模特
class Post(models.Model):
title = models.CharField(max_length=100)
num1 = models.IntegerField(blank=True,default=0)
num2 = models.IntegerField(blank=True,default=0)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('diary:post-detail', kwargs={'pk': self.pk})
这是视图(我在这里尝试查询和处理查询的对象)
def home(request):
a = Post.objects.values('num1')
b = Post.objects.values('num2')
result = a + b
context = {
'result': result,
}
return render(request, 'diary/home.html', context)
这是我模板的工作部分
{% for x in result %}
<p> {{ x }} </p>
{% endfor %}
这是我得到的错误
TypeError at /
unsupported operand type(s) for +: 'QuerySet' and 'QuerySet'
C:\Users\detal\Coding\Trading Diary3\TradingDiary\diary\views.py, line 11, in home
result = a + b
您查询的 return 将是字典。要添加这两个查询,您可以尝试
result = q.union(b)
更简洁的外观
records = query1 | query2
如果您不想重复,请添加 .distinct()
records = (query1 | query2).distinct()
如果你只想要特定的字段,你可以尝试
Post.objects.all().values_list(
"num2").union(Post1.objects.all().values_list("num1"))
或者如果它来自同一个 table
Post1.objects.all().values_list("num1","num2"))
我解决了。这是我的查看代码:
def home(request):
x = Post.objects.all().values_list("num1","num2")
array = []
for i in x:
y = i[0] + i[1]
array.append(y)
context = {
'posts': Post.objects.all(),
'array':array,
}
return render(request, 'diary/home.html', context)
和模板代码:
{% for i in array %}
<p> {{ i }} </p>
{% endfor %}
输出是num1和num2的附加数字列表。解决时我也遇到了问题 - 你不需要“return” for 循环结果在视图中。它只在没有它的情况下工作