如何在Django中标记共享的待办事项列表

时间:2011-02-05 09:54:41

标签: django django-models

我是Django的新手。

基本上我正在开发一个复杂的清单应用程序。该清单包含各种检查点。可以将一个清单分配给客户端,但它与客户端没有直接关系,而是根据检查点的某些属性过滤器进行分配。

class Checkpoint(models.Model):
    title = models.CharField(max_length=100)
    order = models.IntegerField(default=1)
    category = models.ForeignKey(Category, blank=True)
    description = models.TextField(max_length=500, blank=True, null=True)   
    message = models.ForeignKey(Message)
    value_chain = models.ForeignKey(Valuechain)
    manadatory = models.BooleanField(default=False)
    done = models.BooleanField(default=False)
    pending = models.BooleanField(default=False)

class Client(models.Model):
    title = models.CharField('client name', max_length=100)
    duns = models.IntegerField('duns number', max_length=9, unique=True)
    start_date = models.DateField(auto_now_add=True)
    end_date = models.DateField(blank=True, null=True)
    message = models.ForeignKey(Message)
    value_chain = models.ForeignKey(Valuechain)
    slug = models.SlugField(unique=True)

假设一个清单包含10个检查点。每个检查点都有两个属性,消息和值链,它们也是客户端模型的外键。

鉴于10个中的4个检查点具有消息值“MA”和值链值“VCA”,并且客户端选择相同的消息和值链值,则该特定客户端的核对表将仅具有这4个检查点。简而言之,它是基于这些属性值的过滤列表。

这意味着为这两个属性选择相同值的任何其他客户也将具有相同的核对表。

目标是将检查点标记为已完成,但这应仅针对一个客户,在我们标记的检查表下,而不是任何其他客户。

但是当我为客户端呈现清单时,基于属性过滤器并将任何检查点更新为已完成,它将全局更新该检查点。这是我不想要的。

所以基本上这就是我被困住的地方,并在这里寻求一些指导。谢谢:))

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你的问题,但在我看来,你需要一个多对多字段来完成客户端中的检查点(或者在某些相关领域中是唯一的 给每个客户)。这将允许您通过将每个检查点添加到客户端的“完成”多对多字段来将其关联为“已完成”。

如果您需要每个Checkpoint具有每个客户端的唯一属性,则需要为每个完成的检查点实例化新的Checkpoint实例,并使用Checkpoint中的外键字段将其绑定到Client实例,并指向Client。 / p>