当前位置: 首页 > 知识库问答 >
问题:

Django - 没有外键

贾俊艾
2023-03-14

我正在为Django管理员设置:

model.py

class Types(models.Model):
    types = models.CharField(max_length=60)

    def __str__(self):
        return self.type

class File(models.Model):
    file_name = models.CharField(max_length=60)
    type = models.ForeignKey(Types)

    def __str__(self):
        return self.file_name

class Set(models.Model):
    set_name = models.CharField(default='New Set', max_length=60)
    data = models.DateTimeField('Date of creation')
    file = models.ForeignKey(File)
    size = models.IntegerField(default=0)

    def __str__(self):
        return ("%s - %s" % (self.set_name, str(self.data)))

    class Meta:
        ordering = ["data"]

在admin.py

class FileInline(admin.StackedInline):
    model = File
    extra = 2

class SetAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,      {'fields':['set_name']}),
        (None,      {'fields':['data']}),
        (None,      {'fields':['size']}),
    ]
    inlines = [FileInline]

admin.site.register(Set, SetAdmin)

对此,我得到了以下错误:

(admin. E202)“磁盘。文件”没有“磁盘。设置”的外键

根据https://docs . django project . com/en/dev/ref/models/fields/# django . db . models . foreign key中的文档,它应该可以工作。

我做了一些测试:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#working-有一个模型,有两个或更多的在位键,但没有成功。反转类,从Set生成带有ForeignKey的文件也不起作用。

从 Django 教程中,我已经设法让关系正常工作,但我在复制它时陷入了困境。

我检查了以下帖子上的建议:Django admin中的Inline:没有ForeignKey和Django-Inline(没有ForeingKey to),但我不知道是什么问题。

我使用的是Python 2.7.6,Django 1.8.4,MySQL 5.6和Ubuntu 14.04。

我真的很感激任何建议!

共有1个答案

上官联
2023-03-14

修剪您的代码问题是这样的-在您的模型中,您会说:

一个Set有一个File,一个File有很多Sets

但是您的管理文件显示:

集合可以有许多Files

这是两个相互矛盾的陈述。您需要使它们匹配:

修复您的模型:

class File(models.Model):
    # Add the below line
    file = models.ForeignKey(Set) 

class Set(models.Model):
    # Delete this line
    # file = models.ForeignKey(File)

或者修复你的管理员-这是一次彻底的改写,以上内容似乎是你想要的。

 类似资料:
  • 我必须定义code.Spatial类,如主键和codels.LScharacteristic codels.PlannedUsing,如外键。当我尝试migrate:ProgrammingError:ERROR:foreign key约束中指定的id列不存在时,我遇到了这个问题。 UPD完整日志:上述异常是以下异常的直接原因: 回溯(最后一次调用):文件“manage.py”,第23行,从命令行执

  • 这是我的用户。JAVA 这是我的地址。JAVA 但是当我试图持久化对象时,我得到了这个异常 错误不会来,如果我删除"NOTNULL"约束从FORIGN_KEY"USER_ID",但我需要使它作为一个NOTNULL列我应该怎么做。 这是我的注册方法 这是我的SQL脚本

  • 问题内容: 我看着其他问题,无法解决… 我做了以下安装django-debug-toolbar的操作: pip安装django-debug-toolbar 添加到中间件类: 3添加了INTERNAL_IPS: INTERNAL_IPS =(‘174.121.34.187’,) 4将debug_toolbar添加到已安装的应用程序 我没有收到任何错误或任何内容,并且该工具栏也没有显示在任何页面上,甚

  • 问题内容: 是否可以在不使用JPA在数据库中创建外键的情况下建立ManyToOne关联? 这些表由另一个系统拥有,并异步填充。因此,数据库中不能有FK。几乎总是,最终还是有联系。 问题是,即使ConstraintMode.NO_CONSTRAINT,JPA SchemaUpdate也会尝试添加FK。 [错误] ohthSchemaUpdate-无法添加外键约束 如果它没有使其余语句失败,我们可以忽

  • 创建两个表: 课程(Course_id(主键),Course_name) Student(Roll_no(主键),Name,Course_id(外键))并检索“BSC”课程录取的所有学生的姓名。 设BSC的course_id为105。 其查询将是:从Student中选择Name(其中Course_id=105) 在不知道Course_id(仅使用Course_name)的情况下,我可以查询学生的姓

  • 问题内容: 我遵循的是官方Django文档中的第一个应用程序教程,尝试保存通过管理页面进行的某些更改时出现此错误。我对此进行了一些研究,但是我能够找到的可能解决方案(例如迁移数据库)根本行不通。如果您想查看我的代码的某些特定部分,请告诉我。 以下是错误: and the traceback: 问题答案: 我自己碰到了这个问题,它似乎与https://code.djangoproject.com/t