html - 在 CustomModel 中保存“CustomModes / queryset 数组”第一次工作,但随后抛出 'NoneType' 对象没有属性 '_meta'
问题描述
我想将查询集减半并保存这两个查询集以供以后使用(我知道查询集的这种使用(就像它在其中完成的那样Game
)是无效的+它只返回一次,并且在初始化时(for game in games
inits,这个查询集) .如果我刷新站点,我会收到这个错误。我一直在四处寻找,但找不到可以存储其他模型/查询集的模型,这些模型/查询集将永远存在
视图.py
def mm_index(request):
games = Game.objects.all().order_by('-created_on')
for game in games:
if game.isPrepared:
queryset = Game.players.order_by('?')[:10]
Game.team1 = queryset[:5]
Game.team2 = queryset[5:10]
game.isReady = True
game.isPrepared = False
game.save()
context = {
"games": games,
}
return render(request, "mm_index.html", context)
模型.py(游戏)
from django.db import models
from users.models import CustomUser
class Game(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
players = models.ManyToManyField(CustomUser)
team1 = models.QuerySet() # models.ManyToManyField(CustomUser) <- doesnt work
team2 = models.QuerySet() # models.ManyToManyField(CustomUser) <- doesnt work
created_on = models.DateTimeField(auto_now_add=True)
isReady = models.BooleanField(default=False)
isPrepared = models.BooleanField(default=False)
isFinished = models.BooleanField(default=False)
mm_index.html
<tr>
{% for player in game.team1 %}
<td>{{ player.lol_username }}</td>
{% endfor %}
</tr>
<tr>
{% for player in game.team2 %}
<td>{{ player.lol_username }}</td>
{% endfor %}
</tr>
mm_index.html -> 抛出与 相关的错误game.team1
,但是当我执行 {{ game }} 时,它会打印 Game 的__str__
(它只是一个标题,不包括在此处)错误消息:
AttributeError at /mm/
'NoneType' object has no attribute '_meta'
我在这里尝试做的事情是将查询集削减为 10 个自定义用户,然后将其削减一半 (5)。然后,我想将它保存在Game.team1
和Game.team2
中,以便稍后使用该 Forloop 在 HTML 上“打印”它。
解决方案
推荐阅读
- python - 如何使 python 脚本作为扩展在 chrome 中运行
- python - 是否可以像 API 系统一样运行 Google Colab
- matplotlib - 两个 figure.Figure 对象在 matplotlib 并排
- java - 比较 Flink Table API 和 join table,以及 DataStream.join()
- python-3.x - 如何对罕见事件分布进行 t 检验?
- flutter - 在页面颤动之间导航时保持单选按钮值
- docker - Docker:从主机隐藏进程命令名称
- javascript - 打字稿中选择总和的奇怪值
- elasticsearch - 如何解决 Elastic Search 中的 Top hit ERROR
- css - 如何防止资产 css 文件缓存在自定义 BE 模块中?