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