Добавление внешнего ключа к модели - Django
Я новичок в django. Поэтому, пожалуйста, выслушайте меня
У меня есть 2 модели:
1.
class Plans(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255)
plan_type = models.CharField(max_length=255)
class Order(models.Model):
id = models.IntegerField(primary_key=True)
selected_plan_id = models.IntegerField(primary_key=True)
Order
модель selected_plan_id
является Plans
id.
К какой модели я должен добавить внешний ключ? И как?
На данный момент я начал изучать django,
Во-первых, есть несколько плохих способов указывать:
- два поля не могут быть первичными ключами в одной таблице .
- также django по умолчанию включает первичный ключ
id
в каждую таблицу, поэтому нет необходимости добавлять полеid
.
Вы должны поступать следующим образом:
class Order(models.Model):
selected_plan_id = models.ForeignKey(Plans, on_delete=models.CASCADE)
class Order(models.Model):
id = models.IntegerField(primary_key=True)
selected_plan_id = models.IntegerField(primary_key=True)
Plain= models.ForeignKey(Plain)
Проверьте зависимость таблицы и после получения этого сделайте один ключ внешним, как в этой таблице, где простой ключ не зависит от порядка. Но порядок зависит от плана.
Решение, которое вы ищете
class Order(models.Model):
id = models.IntegerField(primary_key=True)
selected_plan_id = models.ForeignKey(Plans, on_delete=models.CASCADE)
Цель использования models.CASCADE в том, что когда объект, на который ссылаются, удаляется, также удаляются объекты, на которые есть ссылки. Также я не советую вам добавлять ключевое слово 'id' к вашему свойству, django делает это автоматически. Если вы добавите ключевое слово 'id' в конец вашего свойства, как в этом случае, вы увидите колонку под названием 'selected_plan_id_id' в вашей таблице.