2011-02-05 2 views
0

Djangoは新しくなっています。Djangoの共有ToDoリストにフラグを付けるには

基本的に私は複雑なチェックリストアプリに取り組んでいます。このチェックリストにはさまざまなチェックポイントが含まれています。チェックリストはクライアントに割り当てることができますが、クライアントに直接関係しているのではなく、チェックポイントの属性フィルタに基づいて割り当てられます。

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個のチェックポイントが含まれているとします。すべてのチェックポイントには、メッセージとバリューチェーンの2つの属性があります。これらの属性はクライアントモデルの外部キーです。

メッセージ値「MA」と値チェーン値「VCA」があり、クライアントが同じ値のメッセージとバリューチェーンを選択した場合、その特定のクライアントのチェックリストには、これらの4つのチェックポイントのみが含まれます。つまり、これらの属性の値に基づいてフィルタリングされたリストです。

この2つの属性に同じ値を選択する他のクライアントも、同じチェックリストを持つことを意味します。

目的は、チェックポイントを完了としてマークすることですが、これは他のクライアントではなく、マークするチェックリストの下にある1つのクライアントに対してのみ行う必要があります。

しかし、クライアントのチェックリストをレンダリングしているときに、属性フィルタに基づいてチェックポイントを更新すると、そのチェックポイントがグローバルに更新されます。私は望んでいない。

だから、基本的にこれは私が立ち往生し、ここでいくつかのガイダンスを求めているところです。ありがとう:)

+1

誰かが答えてくれていないので、私はあなたのやっていることのコード例を示すのに役立つと思う。コード内で何をしているのか、どのラインが問題を引き起こしているのかを表示する(グローバルに更新する)私たちは皆、djangoではなくdjangoを言葉で話します。 –

+0

私の問題は論理、django固有のロジックに関連しています。私はあなたに似たような状況を与えている、学校の質問紙アプリ。 質問表があるとします。それぞれの質問にはクラスとサブジェクトが関連付けられています。生徒は、クラスと科目に基づいて質問をフィルタリングして質問をすることができます。今私は彼が試みた学生の名前の下に質問にフラグを付けるのに苦労している。もちろん、別の生徒は同じ質問を試すことができますが、試行したかどうかにかかわらず、すべての生徒に対して特定の質問をマークしたくありません。 – fusionstrings

答えて

0

私はあなたの質問を完全に理解しているのか分からないが、クライアント(またはいくつかの関連するフィールドが一意ので完了チェックポイントの多対多のフィールドが必要なようだ各クライアントに送信します)。これにより、各チェックポイントをクライアントの「完了」多対多フィールドに追加することで、「完了」として関連付けることができます。

各チェックポイントが各クライアントに固有の属性を持つようにする必要がある場合は、完了したチェックポイントごとに新しいチェックポイントインスタンスをインスタンス化し、クライアントを指すCheckpointの外部キーフィールドを使用してClientインスタンスにバインドする必要があります。

関連する問題