【发布时间】:2021-03-05 03:40:09
【问题描述】:
我对 Django 和网页设计还很陌生,只是一个简单的问题。 在我的视图中是否有一种方法可以使用我已经创建的所有游戏对象生成一个表单,并更新游戏类和可能的团队类中的属性以及它们通过外键连接的属性?我在网上看到了很多关于表单、模型表单和表单集的信息,但它们似乎都更新了一个对象。
理想情况下,我希望能够拥有一个带有表单或一堆表单的页面,当我输入当天发生的游戏的分数时,它将更新引用当天游戏的游戏对象以及相应的团队对象。不确定这是否可能。
以下是我的模型:
class Game(models.Model):
teamone = models.ForeignKey(Team, on_delete = models.SET_NULL, null = True, related_name = 'teamone')
teamtwo = models.ForeignKey(Team, on_delete = models.SET_NULL, null = True, related_name = 'teamtwo')
teamonegoals = models.IntegerField(null = True)
teamtwogoals = models.IntegerField(null = True)
gamedate = models.DateField(null = True)
class Team(models.Model):
position = models.IntegerField(null = True)
name = models.CharField(max_length = 200, null = True)
played = models.IntegerField()
won = models.IntegerField()
drawn = models.IntegerField()
lost = models.IntegerField()
gf = models.IntegerField()
ga = models.IntegerField()
gd = models.IntegerField()
points = models.IntegerField()
curForm = models.CharField(max_length = 200, null = True)
从我的views.py(试图更新今天发生的游戏)我知道这真的很糟糕并且根本没有工作只是试图展示我所拥有的
def inputScores(request):
today = Game.objects.filter(gamedate = datetime.date.today())
GameForm = modelformset_factory(Game, fields = ('teamone','teamtwo','teamonegoals','teamtwogoals'))
#want to iterate through all the objects in today and have them on an update form
#game = Game.objects.get(id = game.id)
#form = GameForm()
#if request.method == 'POST':
# form = GameForm(request.POST, instance = game.id)
#if form.is_valid():
# form.save()
#return redirect('/')
我的表单.py
from django.forms import ModelForm
from .models import *
class GameForm(ModelForm):
class Meta:
model = Game
fields = '__all__'
我的inputscores.html
<!DOCTYPE html>
<html>
<head>
<title>InputScores</title>
</head>
<body>
<form action = "" method = "POST">
{% csrf_token %}
{% for f in forms%}
{{f}}
<hr>
{% endfor %}
<input type = "submit" name = "Submit">
</form>
</body>
</html>
【问题讨论】: