モデルの整数IDを使用して外部キー関係を設定する方法はありますか?これは最適化のためです。
たとえば、Employeeモデルがあるとします。
class Employee(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
type = models.ForeignKey('EmployeeType')
そして
EmployeeType(models.Model):
type = models.CharField(max_length=100)
従業員のタイプを無制限にする柔軟性が必要ですが、デプロイされたアプリケーションにはおそらく1つのタイプしかありません。このように、db呼び出しを回避して、最初にEmployeeTypeオブジェクトを取得できます。
うん:
employee = Employee(first_name="Name", last_name="Name")
employee.type_id = 4
employee.save()
ForeignKey
フィールドは、値を属性に保存し、最後に_id
を付けて、データベースにアクセスしないように直接アクセスできます。
ForeignKey
の_id
バージョンはDjangoの特に有用な側面であり、誰もが必要に応じて知って使用する必要があります。
注意:
@RuneKaagaardは、employee.type
は、最近のDjango=バージョンでは、employee.save()
(古い値を保持)を呼び出した後でも正確ではないことを指摘しています。上記の最適化についてですが、誤った追加クエリが誤っていることを望んでいますので、インスタンスでの作業が終了したときにのみ使用してください(例:employee
)。
create を使用してオブジェクトを作成し、1行でデータベースに保存する代替方法:
employee = Employee.objects.create(first_name='first', last_name='last', type_id=4)