2011-02-05 63 views
0

我對Django來說很新。如何在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個關卡。每個檢查點都有兩個屬性,消息和價值鏈,它們也是客戶端模型的外鍵。

鑑於4個檢查點中有10個檢查點具有消息值「MA」和價值鏈值「VCA」,並且客戶端選擇相同的消息和價值鏈值,那麼該特定客戶端的檢查清單中只有這4個檢查點。簡而言之,它是基於這些屬性值過濾的列表。

這意味着任何其他客戶爲這兩個屬性選擇相同的值也會有相同的清單。

目標是將檢查點標記爲已完成,但這應該僅針對一個客戶端,我們正在標記其檢查列表下,而不是針對任何其他客戶端。

但是,當我爲客戶端呈現一個清單時,基於屬性過濾器並將任何檢查點更新爲已完成,它將全局更新該檢查點。我不想要。

所以基本上這就是我卡住的地方,並尋求一些指導。謝謝:)

+1

嘿fusionstrings,看到沒有人回答,我認爲這將有助於展示你在做什麼的代碼示例。顯示你在代碼中做了什麼,哪一行導致了問題(全局更新)。我們都用django說話,但不是用言語表達django。 – 2011-02-05 20:19:44

回答

0

我不知道我完全理解你的問題,但在我看來,你需要在客戶端做過一個檢查點多到許多領域(或在一些相關領域是獨一無二的 給每個客戶)。這將允許您將每個檢查點關聯爲「完成」,方法是將其添加到客戶端的「完成」多對多字段中。

如果您需要每個檢查點具有每個客戶端的唯一屬性,則您需要爲每個完成的檢查點實例化新的檢查點實例,並使用檢查點中的外鍵字段將其綁定到客戶端實例,並指向客戶端。