社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

使用models.PositiveIntegerField变量的Django循环

Ondřej Horečka • 5 年前 • 1814 次点击  

我有这个密码:

class Zapas(models.Model):
tym_domaci = models.ForeignKey(Tym, on_delete=models.CASCADE)
tym_hoste = models.ForeignKey(Tym, on_delete=models.CASCADE)
datum = models.DateTimeField('datum zapasu')
goly_domaci = models.PositiveIntegerField(default=0)
goly_hoste = models.PositiveIntegerField(default=0)

for x in range (goly_domaci):
    strelec = models.ForeignKey(Hrac, on_delete=models.CASCADE, limit_choices_to={Hrac.tym == tym_domaci})
    nahraval = models.ForeignKey(Hrac, on_delete=models.SET_NULL, blank=True, null=True, limit_choices_to={Hrac.tym == tym_domaci})

for x in range (goly_hoste):
    strelec = models.ForeignKey(Hrac, on_delete=models.CASCADE, limit_choices_to={Hrac.tym == tym_hoste})
    nahraval = models.ForeignKey(Hrac, on_delete=models.SET_NULL, blank=True, null=True, limit_choices_to={Hrac.tym == tym_hoste})

我要做的是,把所有进球的球员和协助进球的球员(如果有的话)都安排到每支球队。问题是,我不能在for循环中使用goly-domaci和goly-hoste,因为它们是正整数字段,而不是整数。有没有办法把PositiveIntegerField转换成整数?或者我能像这样使用for循环吗?我是python和Django的新手,所以我真的不知道如何解决它。谢谢你的帮助:-)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50428
 
1814 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Daniel Roseman
Reply   •   1 楼
Daniel Roseman    6 年前

不,这不是原因。这段代码没有意义;您不能像那样动态地定义字段。字段依赖于数据库中的列,模型必须具有固定数量的字段。以及 goly_domaci 它本身是一个字段,此时没有值;它只有在从实际实例访问时才有值,此时定义其他字段已经太晚了。

但这不是你想做的。没有必要为同一目标模型定义所有这些独立的外键。你要做的是为目标定义一个单独的模型,这个模型指向这个模型(我假设Zapas的意思是游戏)。

class Goal(models.Model):
    game = models.ForeignKey(Zapas)
    team = models.ForeignKey(Tym, on_delete=models.CASCADE)
    strelec = models.ForeignKey(Hrac, on_delete=models.CASCADE)
    nahraval = models.ForeignKey(Hrac, on_delete=models.SET_NULL, blank=True, null=True)

然后你可以放下你的 高卢·多马奇 goly_hoste 当需要显示字段时,可以计算它们:

goly_hoste = my_zpas.goal_set.filter(team=my_zpas.tym_hoste).count()
goly_domaci = my_zpas.goal_set.filter(team=my_zpas.tym_domaci).count()