python - Django - <class> 没有外键

标签 python django django-models

我正在设置 Django 管理员:

模型.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) 'Disk.File' has no ForeignKey to 'Disk.Set'

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

我做了一些测试:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model但没有成功。反转类,使用 Set 中的foreignkey创建文件也不起作用。

从 Django 教程中,我已经成功地建立了这种关系,但我无法复制它。

我检查了以下帖子中的建议: Inline in Django admin: has no ForeignKeyDjango - Inline (has no ForeignKey to)但我不知道出了什么问题。

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

我真的很感激任何建议!

最佳答案

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

A Set has one File, and a File has many Sets

但是您的管理文件显示:

A Set can have many Files

这是两种相互矛盾的说法。您需要使它们匹配,任一:

修复你的模型:

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

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

或者修复你的管理员 - 这是一个完整的重写,上面的内容似乎就是你想要的。

关于python - Django - <class> 没有外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092908/

相关文章:

python - 在另一个类中定义一个类并调用父方法

django - ManyToOneRel 字段用于以下功能?

django - 在 Django 中按中间模型字段对 m2m 项目进行默认排序

python - 使用生成器从给定的单词造句

python - 测试条件不工作

Python开发-elementtree XML和字符串操作

python - Haystack/Whoosh 索引生成错误

mysql - 有没有办法用 django 项目运行 python 脚本?

django模型形式,根据ForeignKey模型中的值限制选择

python - `if something` 还是 `if something is not None` ?