1

モデルを使用して合計飛行時間を提供するときに問題が発生したため、合計飛行時間が提出された時間に加算されます。これは私が使用しているコードのスニペットですが、これまでの 1 時間ほどの間、何も機能していません。

Views.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 は、UserProfile.objects.get(pk=1) などの ORM のオブジェクトであると想定しています。

Django は挿入と更新を自動的に処理します。

あなたがしたいことは、 user_profile.save() を使用することです

user_profile に ID が含まれている場合、データベースを更新しようとします。

于 2012-12-10T18:39:52.413 に答える
0

この問題に対する私のアプローチは、FormSetsを使用することです。formsetモデル フォームと追加のフィールドを持つ 2 番目のフォームの両方のフォームをリストに追加します。次にformSet、テンプレートに送信します。ビューで:

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

テンプレート内:

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

ビュー側では、メソッドをチェックするために両方のフォームに POST リクエストを送信する必要がありますis_valid()(「and」演算子で十分です:if forM.is_valid() and forE.is_valid(): ...

モデル フォームにエクストラフィールドを追加するための文書化されていない方法が存在することに注意してください:モデル フォームのエクストラ フィールドにウィジェットを指定する (Django)

于 2012-12-10T18:49:25.653 に答える