- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个网络应用程序,它允许用户拥有一个照片库,里面装满了照片对象,他们可以将这些照片对象放入相册中。他们可以执行以下操作:
最初,我曾想像这样(简化)编写模型:
def Photo(models.Model):
user = models.ForeignKey(User)
img_file = models.ImageField(upload_to = img_get_file_path)
upload_date = models.DateTimeField(auto_now_add = True)
def Album(models.Model):
title = models.CharField(max_length = 50, required = False)
cover_img = models.ForeignKey(Photo)
album_contents = models.ManyToMany(Photo)
# a user's "photo library" isn't defined in a model, but
# rather by running the query:
# Photo.objects.filter(user = request.user).order_by('upload_date')
这种简单的方法本来会很有效,但用户无法更改其相册中照片的顺序(ManyToMany relationships 未排序)。我已经搜索了解决方案,每个人都指向使用 intermediate models ,使用 through
语句:
中间模型方法适用于对相册中的照片进行排序,但不适用于从相册中删除照片。 Intermediate models不支持 .add()
、.create()
、.remove()
或赋值。它们只支持.clear()
方法,该方法会清除整个相册。我需要用户能够一次从相册中删除一张照片,同时仍然能够对相册中的照片进行排序。
我怎样才能做到这一点?
最佳答案
你不应该让 django 删除添加、创建、删除的事实阻止你做任何事情。
仅仅因为它“仅”支持 .clear()
方法,并不意味着您不能编写普通的 python 代码来替换该功能。
The intermediate model approach would work in ordering the photos in the album, but not in removing photos from an album. Intermediate models don't support .add(), .create(), .remove(), or assignment. They only support the .clear() method, which would clear the entire album. I need users to be able to remove one photo from an album at a time, while still being able to order the photos in the album.
我不明白是什么阻止您删除一种关系而不是所有关系。
只要找到M2M中间表的实例,删除行即可。这是一个普通的 django 模型。
# say you have a photo that the user wants to remove from album.
album = Album.objects.latest('id')
photo = Photo.objects.album_contents.latest('id')
# to remove that m2m relationship...
# delete the through table row which matches said relationship
MyThroughTable.objects.filter(album=album, photo=photo).delete()
关于python - Django:具有订购和添加/删除关系能力的 ManyToMany?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290559/
经过大量搜索但没有成功后,我决定在这里提出我的问题,所以我将首先举一个例子来说明问题。 我有 4 个类(class) A - B - C - D我在 A 和 B 之间有一个名为 A_B 的多对多关系(
该应用程序允许用户选择某些关键字(我们监控 TwitterStream) 每个关键字都包含包含其关键字的推文 ID 列表。 public class Keyword extends Model { @
我有 2 个实体:User 和 UsersList。 @Entity @Table(name = "USERS") public class User { @Id @Generated
嘿,我有一个关于人际关系的问题。 我希望用户有友谊。所以一个用户可以成为另一个用户的 friend 。我假设我需要通过 Friendship 表使用 ManyToManyField。但我无法让它工作。
我需要让帖子接受我需要的尽可能多的语言,所以我有两个模型 post和 language在后模型中: public function languages(){ return $this->bel
在我的一个模型中,我有一个属于多条配置的类别字段。 我想知道如何在模板中获得以下输出。 第 1 类、第 2 类、第 3 类和第 4 类 所以基本上用逗号分隔每个类别,除了最后一个用“和”替换 最佳答案
我有一个用于 User 和 House 的多对多表,称为 user_house。我不想只添加两列:user_id 和 house_id,而是添加 3 列:例如,action、created_at、up
我正在做一个食品卡车 API,只是为了学习 spring-boot。在做的过程中,遇到了关于注释 @Manytomany 如何工作的问题。 因为这个项目只是为了学习我想使用Google CLoud F
我有一个ManyToMany链接和一个链接三个对象的外键。 [A]>-----[C] A 可以属于多个 B,反之亦然。但是,A 只能属于具有同一父对象 C 的 B 对象。 我正在尝试在模型的 clea
如果我有两个模型与直通模型具有多对多关系,我如何从该“直通”表中获取数据。 class Bike(models.Model): nickname = models.CharField(max_l
我已经处理我的用户 - 角色 - 映射问题很长一段时间了,但我目前陷入这个问题: 调用 init 方法失败;嵌套异常是 org.hibernate.AnnotationException:使用 @On
我在坚持方面遇到了问题。我有一个膳食类(class),其中有产品列表。在 Product 类中是一个 Meals 列表——@ManyToMany 关系。 当我尝试保存它时,编译器想要保存每个产品,但随
我正在学习 Spring JPA,我从将对象映射到表开始。我对 OneToOne 和 OneToMany 关系没有任何问题,但我不太明白为什么我无法保留与 ManyToMany 关系相关的对象。我有一
我在 MySQL 中创建了表:role tabel 、 object_label 和 role_object_label (链接表) 我定义了@ManyToMany,但出现异常。我的代码有什么问题?
我有一个包含多个延迟初始化集合的类,其中包括 OneToMany 和 ManyToMany。 ManyToMany 关系是单向的,因此 Expert 类没有 Project 集合。 @OneToMan
我阅读了很多关于这个问题的链接: How to save a django model with a manyToMany Through relationship, AND regular many
我已经实现了一个多图像上传方法,但我想知道使用哪些字段/小部件能够将图像 ID 与表单一起传递。 在填写表单时异步添加图像,并且在提交时,这些图像将被分配给表单正在添加/编辑的对象。我怎样才能传递这个
我遇到了一个尚未解决的问题。 环境: MySQL 5 操作系统 hibernate 4.1 Spring 3.1 Spring Data JPA 我有两个处于多对多关系的实体。为此,我使用带有外键的联
我有两个实体 Post 和 Tags 这个实体有 ManyToMany 的关系,很多帖子有很多标签,很多标签有很多帖子,并且有实体类别我有一个类别的很多帖子,我需要创建 Action 来查找类别的帖子
我的类(class)类(class) @Entity public class Course { @Column @Id private String courseCode;
我是一名优秀的程序员,十分优秀!