Gorm a de nombreuses tables AutoMigrate () se fâche d'avoir besoin de définir une clé étrangère

Voir en a beaucoup dans la documentation

https://gorm.io/docs/has_many.html

Postscript

C'était fondamentalement faux. J'espère que cela aide quelqu'un qui fait des erreurs similaires.

contenu de l'erreur

// Vote model
type Vote struct {
	gorm.Model
	ID          uint
	Title       string
	Description string
	WorkSheets  []Worksheet
}

// Worksheet model
type Worksheet struct {
	gorm.Model
	ID         uint
	Text       string
	VoteNumber uint
}

~~ Les feuilles de travail de Vote n'ont aucune clé externe spécifiée Puis ... ~~

invalid field found for struct main.Vote's field WorkSheets,
need to define a foreign key for relations or it need to implement the Valuer/Scanner interface

~~ Je me fâche lorsque je définis une clé externe. ~~

Code d'amélioration

// Vote model
type Vote struct {
	gorm.Model
	ID          uint
	Title       string
	Description string
    //Ajout de la définition de la clé externe
	WorkSheets  []Worksheet `gorm:"foreignKey:ID"`
}

// Worksheet model
type Worksheet struct {
	gorm.Model
	ID         uint
	Text       string
	VoteNumber uint
}

~~ L'ID de feuille de travail est utilisé comme clé externe ~~

Une vraie solution

// Vote model
type Vote struct {
	gorm.Model
	Title       string
	Description string
	WorkSheets  []Worksheet
}

// Worksheet model
type Worksheet struct {
	gorm.Model
	Text       string
  //ajouter à
	VoteID     int
	VoteNumber int
}

Il semble qu'il était nécessaire d'ajouter un champ pour la clé primaire du côté plusieurs de a plusieurs. J'étais complètement incompris.

Recommended Posts

Gorm a de nombreuses tables AutoMigrate () se fâche d'avoir besoin de définir une clé étrangère
L'histoire qu'il fallait spécifier on_delete après avoir spécifié la clé externe dans le changement de modèle de Django