首页 > 解决方案 > 在 CustomModel 中保存“CustomModes / queryset 数组”第一次工作,但随后抛出 'NoneType' 对象没有属性 '_meta'

问题描述

我想将查询集减半并保存这两个查询集以供以后使用(我知道查询集的这种使用(就像它在其中完成的那样Game)是无效的+它只返回一次,并且在初始化时(for game in gamesinits,这个查询集) .如果我刷新站点,我会收到这个错误。我一直在四处寻找,但找不到可以存储其他模型/查询集的模型,这些模型/查询集将永远存在

视图.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.team1Game.team2中,以便稍后使用该 Forloop 在 HTML 上“打印”它。

标签: htmldjangodjango-models

解决方案


推荐阅读