gpt4 book ai didi

python - Django - 没有外键

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:41 29 4
gpt4 key购买 nike

我正在设置 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 创建 File 也没有用。

在 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com