将模型的实例传递给django formset

时间:2011-05-08 17:27:23

标签: django django-views django-forms

我定义了以下模型:

class Team(models.Model):
    Name = models.CharField(max_length=250)

class Fixture(models.Model):
    HomeTeam = models.ForeignKey(Team, related_name="HomeTeam")
    AwayTeam = models.ForeignKey(Team, related_name="AwayTeam")
    HomeTeamScore = models.IntegerField(blank=True, null=True)
    AwayTeamScore = models.IntegerField(blank=True, null=True)
    Date = models.DateTimeField()

class Prediction(models.Model):
    Fixture = models.ForeignKey(Fixture)
    PredictHomeTeam = models.IntegerField()
    PredictAwayTeam = models.IntegerField()
    PredictionDate = models.DateTimeField()
    User = models.ForeignKey(User)

因此,如果使用过滤器来获得基于Date的6个灯具,那么我想将它们传递给PredictionForm的一个formset,但我正在努力如何传入灯具,因为它需要作为外键字段。

这是我的第一个django项目,所以我想我也在寻找确认我是否在使用formset的正确方面。

1 个答案:

答案 0 :(得分:3)

您希望使用model formset,其工作方式与普通formset相同,但了解如何使用模型。

from django.forms.models import modelformset_factory
PredictionFormSet = modelformset_factory(Prediction)

formset文档介绍了如何use initial data with your formset

PredictionFormSet(initial=[{'Fixture': fixture, 'User': user}])

就像注释一样,对所有类方法/属性使用小写和下划线。而不是:

Fixture = models.ForeignKey(Fixture)

这样做:

fixture = models.ForeignKey(Fixture)

这使得更容易阅读和推理其他程序员的代码。你应该阅读PEP 8这是官方的Python风格指南。