Django:从父项到子项选项卡的外键

2024-09-25 08:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个从父表到子表的外键链接;对于一个主要由后端驱动的站点。目前只有管理部分的网站是活跃的,因为这是唯一需要的部分,使我们的信息团队工作。在

应用程序结构:

吸引力:

|
|---型号
||
||----\uu init_u.py
| | --- imagemetadata.py
|
| --- 模型.py
| --- 管理员py在

(imagemetadata在目录模型下)

文件imagemetadata.py在

from attraction.models import Attraction

class ImageMetadata(models.Model):
    image = models.ImageField(upload_to='', blank=True, null=True)
    upload_time = models.DateTimeField(null=True)

    attraction = models.ForeignKey(Attraction)

文件模型.py在

^{pr2}$

文件管理员py在

class ImageMetadataInline(admin.TabularInline):
    model = ImageMetadata
    extra = 2

class AttractionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['name', 'description', 'url']}),
    ]

    inlines = [ImageMetadataInline, PriceInline]

admin.site.register(Attraction, AttractionAdmin)

我面临的问题是我无法从吸引力到Imagemetadata获取外键。如果我试图使一个双向外键导入错误发生。(Python中不允许循环导入)。 因为有外星的吸引力,所以不能有外星的元数据。在

有没有一种方法可以使外键点从吸引力到ImageMetadata,而不改变admin的结构?在


Tags: 文件py模型trueadminmodels管理员结构
1条回答
网友
1楼 · 发布于 2024-09-25 08:35:08

可以将Meta类定义为:

class ImageMetadata(models.Model):
    # ... your fields

    class Meta:
        app_label = 'attraction'

在你的应用程序目录中创建一个子目录models。将模型拆分为不同的文件。然后编辑__init__.py

^{pr2}$

现在您可以:

from attraction.models import whatever

我就这样把考试分开了。它应该也适用于模型。在

不过,我建议你先重新考虑一下你的设计。在Python中,在一个文件中包含多个类是完全正确的。Python既不是PHP也不是Java。每个文件200个LOC不算什么。我想说如果你模型.py高达2k LOC。只是我个人的意见。也许这里的一些Python大师可以纠正我。在

在你把你的模型.py考虑一下你是否可以把你的项目分成更小的应用。也许ImageMetadata应该属于另一个应用程序。不能通过拆分模型.py变成很多文件。仅仅因为你有许多小文件而不是一个大文件并不意味着项目逻辑被拆分。你应该把你的逻辑分解成几个独立的应用程序。在

相关问题 更多 >