Django的管理人员很多现场混乱

2024-10-03 02:33:21 发布

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

我正在自学Django并创建一个个人投资组合网站。我建立了一个名为FolioItem的模型,它利用了与另一个名为FolioImage的模型的多对多关系。每一个文件夹项都可以有许多页图像。在

class FolioImage(models.Model):
    image = models.FileField(upload_to='portfolio_images')
    def __unicode__(self):
        return self.image.name

class FolioItem(models.Model):
    title = models.CharField(max_length=50)
    thumbnail = models.FileField(upload_to='portfolio_images')
    images = models.ManyToManyField(FolioImage)
    def __unicode__(self):
        return self.title

在Django的管理界面中,我可以创建新的FolioItem,但是images字段(与FolioImage相关的多对多)显示了以前添加到其他FolioItem中的所有现有FolioImage。在

实际上,这应该是空白的,因为它是一个新项目,没有任何图像关联。在创建新项目时,有没有办法强制此选择器为空?在

另外,当我试图编辑一个已有的条目时,我似乎无法添加或删除FolioImage关联(绿色的小+图标不存在)。在

任何建议都很好。在


Tags: todjango模型图像imageselfmodelmodels
2条回答

Is there any way to force this selector to be blank when creating a new item?

我想您对默认的selectmultiple小部件的接口有点困惑。它向你展示所有现有的图片,让你可以选择它们,但是在一个全新的项目上没有关系。你必须实际地点击一个项目,或者进行shift(或控制)点击技巧来选择多个项目,然后保存你的对开项目以便建立关系。在

Also, it seems when I attempt to edit an existing entry I can't add or delete FolioImage associations (the small green + icon is not present).

同样,我认为您只需要单击或ctrl-click来选择/取消选择要与项目关联的图像。在

您还可能对使用Django的酷的水平或垂直过滤器而不是默认的selectmultiple界面感兴趣。也可以使用内联接口。更多细节是herehere。我认为过滤器界面更直观。在

我觉得你用错了关系。如果只希望FolioImages属于一个FolioItem,那么应该使用ForeignKey从FolioImage到FolioItem。然后,您可以配置管理接口,将项目的相关图像显示为内联表单集,这将允许您添加仅编辑该项目的图像。在

相关问题 更多 >