【问题标题】:Django ManyToMany Relationship ErrorDjango 多对多关系错误
【发布时间】:2016-03-22 06:15:33
【问题描述】:

我想在 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;

在迁移中,创建了表,但是当我想使用软件时出现此错误: "没有这样的表:school_manager_lesson_Student"

在 Django 文档中刚才说要定义多对多关系,使用 ManyToManyField

【问题讨论】:

  • 您是否进行过迁移?
  • 是的,当然! @丹尼尔罗斯曼
  • 我猜你是把student模型改名为student改成Student,反之亦然。
  • 我自己重命名了....没有效果:(@danihp

标签: python django database sqlite


【解决方案1】:

检查您的应用是否包含在设置文件的已安装应用列表中。然后检查您的迁移是否已应用。可以帮助您的命令:

  • ./manage.py 检查
  • ./manage.py makemigrations
  • ./manage.py 迁移

【讨论】:

  • 我用了这些方法都不影响
  • 在mysql中查表:使用databasename;显示表格;
  • 我自己先检查了一下......没有那个桌子@shapoglyk
猜你喜欢
  • 2012-07-07
  • 2021-07-06
  • 2012-06-30
  • 2012-02-26
  • 1970-01-01
  • 2018-09-09
相关资源
最近更新 更多