sql >> データベース >  >> RDS >> Mysql

フォームPOSTメソッドからではなく、フォームデータによって外部キーを保存する

    intを割り当てようとしないでください payment.studentの場合 。studentを割り当てます インスタンス。

    payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
    

    さらに、コーディングスタイルのルールに従う必要があります(PEP8について読む ):

    • 大文字で始まるクラス名
    • 大文字で始まらないフィールド名
    • 変数とフィールドはキャメルケースを使用しません-クラス名は使用します

    コードはこのルールがなくても機能しますが、Python開発者として、読み取り可能なコードに関するいくつかの標準があります。

    また、Djangoでは主キーフィールドを定義する必要はありません。自動的に作成され、instance.pkでアクセスできます。 。
    そして、外部キーがstudentを指すようにする必要があるかどうかはわかりません。 studentの列 テーブル。
    そして、studentをインポートするだけです。 他のモジュールで定義されている場合はモデル。

    したがって、これらの修正により、クラス定義は次のようになります。

    from other_app.models import Student
    
    class Payment(models.Model):
        student = models.ForeignKey(Student)
        date_time = models.DateField(auto_now_add=True)
        amount_due = models.DecimalField(max_digits=5, decimal_places=2)
    

    これで、Paymentインスタンスには暗黙のフィールドpkがあります。 これは主キーを表します。最後に、スタイリングを修正したビューの行:

    payment.student = Student.get(pk=1) # Desired value `1` for foreign key assumed
    # payment is instance so all lowercase here
    # Student on the right side is a class so started with capital
    



    1. MySQLテーブルをUTF-8に変更するにはどうすればよいですか?

    2. PostgresのOPENXML

    3. SQL行をハッシュしますか?

    4. Rails 4カスタム404により、Herokuでpostgresql接続が失敗します