我正在自学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关联(绿色的小+图标不存在)。在
任何建议都很好。在
我想您对默认的selectmultiple小部件的接口有点困惑。它向你展示所有现有的图片,让你可以选择它们,但是在一个全新的项目上没有关系。你必须实际地点击一个项目,或者进行shift(或控制)点击技巧来选择多个项目,然后保存你的对开项目以便建立关系。在
同样,我认为您只需要单击或ctrl-click来选择/取消选择要与项目关联的图像。在
您还可能对使用Django的酷的水平或垂直过滤器而不是默认的selectmultiple界面感兴趣。也可以使用内联接口。更多细节是here和here。我认为过滤器界面更直观。在
我觉得你用错了关系。如果只希望FolioImages属于一个FolioItem,那么应该使用ForeignKey从FolioImage到FolioItem。然后,您可以配置管理接口,将项目的相关图像显示为内联表单集,这将允许您添加仅编辑该项目的图像。在
相关问题 更多 >
编程相关推荐