除了基本的用户模型,我在我的django应用程序中还有第二个自定义模型。这种模式被称为“挑战”。我希望这个挑战对象包含每个用户的布尔值列表,我可以在其中存储哪些用户已经完成了这个挑战。
此列表必须能够执行以下操作:
- 每当添加新用户时,每个现有的挑战对象都需要获得一个新的布尔值,该值被设置为false。
- 每当删除一个用户时,每个挑战中相应的布尔值也必须被删除。
- 每当用户完成质询时,质询对象内的列表必须更新。
我该怎么做?
我想我需要使用某种ManyToOne关系的ForeignKey,但我真的不知道该怎么做。我添加了一个ManyToMany字段,并将参数User赋予它,但这只给了我一个无法删除任何用户的所有用户的列表。
2条答案
按热度按时间roejwanj1#
我认为拥有布尔值列表是个坏主意,我会这样做:
字符串
因此,每当用户完成挑战时,您可以将他/她添加到successful_users列表:
型
如果要获取完成质询的所有用户:
型
如果你想得到所有尚未完成挑战的用户,你可以这样做,例如:
型
busg9geu2#
您可以为质询添加一个单独的模型,在该模型中可以使用外键引用每个用户。使用on_delete=models.CASCADE在删除用户时自动删除对象。
字符串
每当用户完成质询时,您都可以使用匹配的用户ID访问质询对象,并将布尔值更新为True
如果您想要有多个挑战,您可以创建一个模型来存储所有的挑战,并有一个额外的关系模型来显示哪些用户已经完成了哪些挑战。
型