1

我在使用模型提供总飞行小时数时遇到问题,因此可以将总飞行小时数添加到提交的小时数中。这是我正在使用的代码片段,但到目前为止,在过去一个小时左右的工作中,没有任何效果。

视图.py

        pirephours = int(user_profile.totalhours) + 1
        user_profile.update(totalhours=pirephours)

模型.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    country = models.CharField("Country", max_length=50)
    totalflights = models.IntegerField("Total Flights", default=0)
    totalhours = models.IntegerField("Total Hours",default=0)
    hub = models.ForeignKey(Airports, default=0)

视图中的 + 1 现在只是在总小时数中增加 1 小时,但我也想知道是否有办法使用以表单而不是数字提交的内容。该表单只是其自身模型的模型表单。

任何输入都会很棒。

4

2 回答 2

1

我假设 user_profile 是来自 ORM 的对象,例如 UserProfile.objects.get(pk=1)。

Django 自动处理插入和更新。

你想要做的是使用 user_profile.save()

如果 user_profile 包含一个 id,它将尝试更新数据库。

于 2012-12-10T18:39:52.413 回答
0

我解决这个问题的方法是使用FormSets。我将两个表单添加到formset列表中,模型表单和带有额外字段的第二个表单。然后我发送formSet到模板。鉴于:

forM = UserProfileModelFormForm( ...
forE = ExtraUserProfileSingleForm( ...
formSet = [ forM, forE  ]

在模板中:

<form method="post" action="">
    {% for form in formSet %}
        {{ form }}
    {% endfor %}
</form>

在视图方面,您应该向两种表单发送 POST 请求以检查is_valid()方法(“和”运算符就足够了:if forM.is_valid() and forE.is_valid(): ...

请注意,存在一种未记录的向模型表单添加额外字段的方法:为模型表单额外字段指定小部件(Django)

于 2012-12-10T18:49:25.653 回答