2011-02-05 2 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 контрольных точки. Короче, это отфильтрованный список, основанный на значениях этого атрибута.

Он подразумевает, что любой другой клиент, который выбирает одно и то же значение для этих двух атрибутов, также будет иметь тот же контрольный список.

Цель состоит в том, чтобы отметить контрольную точку как выполненную, но это должно быть только для одного клиента, под чей контрольный список мы отмечаем, а не для любого другого клиента.

Но когда я создаю контрольный список для клиента, основываясь на фильтрах атрибутов и обновляя любую контрольную точку, как это сделано, она обновляет этот контрольный пункт по всему миру. которого я не хочу.

SO в основном это место, где я застрял и искал здесь какое-то руководство. Спасибо :)

+1

Hey fusionstrings, видя, что никто не ответил, я думаю, что это поможет показать примеры кода того, что вы делаете. Покажите, что вы делаете в коде и какая строка вызывает проблемы (обновление по всему миру). Мы все говорим о джанго, но не джанго в словах. –

+0

Моя проблема больше связана с логикой, специфичной для django логикой. Я даю вам аналогичную ситуацию, приложение для бумажных документов для школы. Предположим, есть таблица вопросов. У каждого вопроса есть класс и тема, связанные с ним. Студент может решить, чтобы попытаться задавать вопросы, фильтруя вопросы, основанные на классе и предмете. Теперь у меня тяжелое время, чтобы поставить вопрос под именем студента, который он попытался. Конечно, другой студент может попытаться задать один и тот же вопрос, но мы не хотим отмечать определенный вопрос для всех учеников независимо от того, пытались ли они это сделать. – fusionstrings

ответ

0

Я не уверен, что полностью понимаю ваш вопрос, но мне кажется, что для выполнения контрольных точек в клиенте вам понадобится поле «много ко многим» для определенных контрольных точек (или в некотором родственном поле, которое является уникальным каждому клиенту). Это позволит вам связать каждую контрольную точку как «сделанную», добавив ее в поле «done» many-to-many клиента.

Если вам нужна каждая контрольная точка для получения уникальных атрибутов для каждого клиента, вам вместо этого нужно создать экземпляр новых экземпляров контрольной точки для каждой контрольной точки и связать ее с экземпляром клиента с полем внешнего ключа в контрольной точке, указав на Client.