使用模型提供飞行小时总数时遇到问题,因此可以将总飞行小时数添加到提交的小时数。这是我正在使用的代码片段,但到目前为止,在过去一小时左右的时间里,没有任何工作。
Views.py
pirephours = int(user_profile.totalhours) + 1
user_profile.update(totalhours=pirephours)
Models.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小时,但我还想知道是否有办法使用表单中提交的内容而不是数字。表单只是模型本身的模型形式。
任何输入都会很棒。
答案 0 :(得分:1)
我假设user_profile是来自ORM的对象,例如UserProfile.objects.get(pk = 1)。
Django自动处理插入和更新。
您要做的是使用user_profile.save()
如果user_profile包含id,它将尝试更新数据库。
答案 1 :(得分: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(): ...
请注意,存在一种未记录的方法,可以将额外字段添加到模型表单中:Specifying widget for model form extra field (Django)