3

ピザの注文を維持するために、(すぐに使える ORM を使用して) Django アプリケーションを作成しています。私は次のモデルを持っています:

class Employee(models.Model):
    name = models.CharField(max_length=50)

class PizzaPlace(models.Model):
    name = models.CharField(max_length=50)
    employees = models.ManyToManyField(Employee)

class Order(models.Model):
    description = models.CharField(max_length=50)
    pizzaplace = models.ForeignKey(PizzaPlace)
    chef = models.ForeignKey(Employee)

各ピザ店の従業員を維持するために、modelformset_factory を使用しています。私が望むのは、従業員が解雇された場合でも、ピザ プレイスを離れた場合でも、従業員が履行した注文はそのまま残り、ピザ プレイスで利用できるようにすることです。現在起こっていることは、従業員レコードがピザ店から削除されたときです。削除は連鎖しています。

注文を維持することとの関連付けを維持するための最良の方法は何ですか?

4

2 に答える 2

5

あなたは出来る:

  • から削除された従業員を削除せずPizzaPlace、代わりにフラグを設定します
  • 引数を使用してon_delete、employee フィールドを null に設定します。chef = models.ForeignKey(Employee, null = True, on_delete = models.SET_NULL)

django ドキュメントのaForeignKeyのオプションを見て、ユース ケースに適したものを見つけてください。on_delete

于 2013-04-10T02:14:03.133 に答える
3

従業員を削除する前に関係をクリアする

e = Employee.objects.get(id=1)
e.order_set.clear()
e.delete()

注文は削除された従業員を引き続き参照していると思いますので、それに対処する必要がありますが、削除してもすべての注文がカスケード削除されることはなくなります。

于 2013-04-10T02:24:14.713 に答える