Добавление внешнего ключа к модели - 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' в вашей таблице.

Вернуться на верх