python - Django 模型为所有用户创建一个任务
问题描述
所以我正在尝试构建一个 webapp,其中向所有用户提供相同的任务,当用户完成任务时,他们可以将其标记为已完成,为此我添加了一个“状态”布尔值,当“任务”不完整,用户可以通过按钮将其设置为false,问题是当我使用多对多字段时,如果一个用户更改“状态”,每个人都会更改。
我也尝试使用外键,但如果我使用外键,我必须为每个用户创建一个任务。
我想要的是创建一个任务,将其分配给所有用户,然后所有用户都可以与该任务进行交互,而不会影响其他用户看到的内容。
这些是我创建的模型(西班牙语):
class Usuario(AbstractUser):
pass
class Tps(models.Model):
users = models.ForeignKey(Usuario, on_delete=CASCADE)
titulo = models.CharField(max_length=100)
TECNOLOGIA_DE_LA_FABRICACION = 'TDF'
MANTENIMIENTO_Y_REPARACION_DE_EQUIPOS = 'MYRDE'
MAQUINAS_ELECTRICAS_Y_ENSAYOS = 'MEYE'
SEGURIDAD_E_HIGIENE_INDUSTRIAL = 'SEHI'
LABORATORIO_DE_ENSAYOS_INDUSTRIALES = 'LDEI'
INSTALACIONES_INDUSTRIALES = 'II'
RELACIONES_HUMANAS = 'RH'
TALLER_DE_ELECTROMECANICA = 'TE'
ORGANIZACION_INDUSTRIAL = 'OI'
INSTALACIONES_ELECTRICAS = 'IE'
EDUCACION_FISICA = 'EF'
EQUIPOS_Y_APARATOS_DE_MANIOBRA_Y_TRANSPORTE = 'EYADMYT'
MATERIAS_CHOICES = [
(TECNOLOGIA_DE_LA_FABRICACION, 'Tecnologia de la fabricación'),
(MANTENIMIENTO_Y_REPARACION_DE_EQUIPOS, 'Mantenimiento y R de equipos'),
(MAQUINAS_ELECTRICAS_Y_ENSAYOS, 'Máquinas eléctricas y ensayos'),
(SEGURIDAD_E_HIGIENE_INDUSTRIAL, 'Seguridad e higiene industrial'),
(LABORATORIO_DE_ENSAYOS_INDUSTRIALES,
'Laboratorio de ensayos industriales'),
(INSTALACIONES_INDUSTRIALES, 'Instalaciones industriales'),
(RELACIONES_HUMANAS, 'Relaciones humanas'),
(TALLER_DE_ELECTROMECANICA, 'Taller de electromecánica'),
(ORGANIZACION_INDUSTRIAL, 'Organización industrial'),
(INSTALACIONES_ELECTRICAS, 'Instalaciones eléctricas'),
(EDUCACION_FISICA, 'Educacion fisica'),
(EQUIPOS_Y_APARATOS_DE_MANIOBRA_Y_TRANSPORTE,
'Equipos y aparatos de maniobra y transporte')
]
materia = models.CharField(
max_length=8, choices=MATERIAS_CHOICES, default=None)
fecha_actual = models.DateField(default=timezone.now)
fecha_entrega = models.DateField(auto_now=False, auto_now_add=False)
material = models.URLField()
consignas = models.URLField()
status = models.BooleanField(default=True)
def __str__(self):
return self.titulo
如果有人可以帮助我,那就太好了,谢谢:)
解决方案
我认为您应该使用中间表并与“通过”属性建立关系,这样您就可以制作一个像
class Tps(models.Model):
users = models.ForeignKey(Usuario, on_delete=CASCADE, through='TaskDone')
class TaskDone(models.Model):
user = models.ForeignKey(Usuario, on_delete=models.CASCADE)
tps = models.ForeignKey(Tps, on_delete=models.CASCADE)
status = models.BooleanField(default=True)
推荐阅读
- javascript - Json 对象到撇号数组
- python - 提高 For-Loop 限制
- spring-kafka - Spring Cloud Stream - 基于内容的路由
- facebook - 无法使用 Facebook 登录登录到我的应用
- python - 如何使用 scikit-learn 将 one-hot-encoded 数据替换为与它们相关的原始数据?
- swift - 如何访问 switch case 的关联值,它本身在尾随闭包中
- flutter - 在 Flutter 中,如何将 'transformEvents' 替换为 `on
`带有`EventTransformer`? - node.js - 如何仅在周日但每秒打开 Cron Job?
- html - 我无法创建 CSS 下拉菜单
- excel - 使用 VBA 代码进行网页抓取:如何浏览登录页面?