简体   繁体   中英

Django ManyToMany Relationship Error

i want to set a manytomany relationship in django

models.py :

class student(models.Model):
    id = models.AutoField(primary_key=True)
    First_Name = models.CharField(max_length=100,null=True)
    Last_Name = models.CharField(max_length=100,null=True)
    Birthday = models.CharField(max_length=10,null=True)
    Phone = models.CharField(max_length=20,null=True)
    Mobile = models.CharField(max_length=20,null=True)
    STNO = models.CharField(max_length=10,null=True)
    Father_Name = models.CharField(max_length=100,null=True)
    Father_Job = models.CharField(max_length=100,null=True)
    Father_Phone = models.CharField(max_length=20,null=True)
    ID_Code = models.CharField(max_length=10,null=True)
    National_ID = models.CharField(max_length=10,null=True)
    Address = models.CharField(max_length=200,null=True)
    Study_Field = models.CharField(max_length=100,null=True)
    Probation = models.BooleanField(default=False)
    def __STR__ (self):
        return self.STNO
    class Meta:
        ordering = ('id','First_Name','Last_Name','STNO','ID_Code','National_ID',
    'Phone','Mobile','Father_Name','Father_Phone','Father_Job',
    'Birthday','Address','Study_Field','Probation')

class lesson(models.Model):
    id = models.AutoField(primary_key=True)
    Name = models.CharField(max_length=100,null=True)
    Code = models.CharField(max_length=100,null=True)
    Capacity = models.IntegerField(null=True)
    UNO = models.IntegerField(null=True)
    CNO = models.IntegerField(null=True)
    Hour = models.IntegerField(null=True)
    Student = models.ManyToManyField(student)
    def __STR__ (self):
        return self.Code
    class Meta:
        ordering = ('id','Name','Code','Capacity','UNO',
    'CNO','Hour')

admin.py :

class lesson_admin(admin.ModelAdmin):
    fieldsets = [
        ('Lesson Info : ',{'fields':['Name','Code','Capacity']}),
        ('ManyToMany : ',{'fields':['Student']})
    ]

sqlmigrate

BEGIN;
CREATE TABLE "school_manager_lesson_Student" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "lesson_id" integer NOT NULL REFERENCES "school_manager_lesson" ("id"), "student_id" integer NOT NULL REFERENCES "school_manager_student" ("id"),UNIQUE ("lesson_id", "student_id"));
INSERT INTO "school_manager_lesson_Student" (id, lesson_id, student_id) SELECT id, lesson_id, student_id FROM "school_manager_lesson_student";
DROP TABLE "school_manager_lesson_student";
CREATE INDEX "school_manager_lesson_Student_55174b7b" ON "school_manager_lesson_Student" ("lesson_id");
CREATE INDEX "school_manager_lesson_Student_30a811f6" ON "school_manager_lesson_Student" ("student_id");
COMMIT;

in migration , table created but when i want to use software i have this error : "no such table: school_manager_lesson_Student"

in the Django Document Just said To define a many-to-many relationship, use ManyToManyField

Check that your app is included in a list of installed apps in settings file. Then check that your migrations applied. Commands that can help you:

  • ./manage.py check
  • ./manage.py makemigrations
  • ./manage.py migrate

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM