【问题标题】:Passing instances of a model to a django formset将模型的实例传递给 django formset
【发布时间】:2011-08-21 04:55:32
【问题描述】:

我定义了以下模型:

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 的表单集中,但我正在努力解决如何传入固定装置,因为它需要作为外键字段。

这是我的第一个 django 项目,所以我想我也在寻找有关使用表单集是否正确的确认。

【问题讨论】:

    标签: django django-views django-forms


    【解决方案1】:

    您想使用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 风格指南。

    【讨论】:

    • 看起来正是我所追求的。也感谢会议提示。
    猜你喜欢
    • 2021-10-26
    • 2021-03-22
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2013-02-11
    • 2010-10-12
    相关资源
    最近更新 更多