2014-02-17 3 views
0

Так что я хочу, чтобы привычка отслеживания веб-страницу, у меня есть 3 модели (привычки называются категориями)Джанго M2M доступа значения модели в шаблоне

class Day(models.Model): 
    name = models.CharField(max_length=8) 
    date = models.DateField() 

class Category(models.Model): 
    name = models.CharField(max_length=100) 
    categoryBD = models.ManyToManyField(Day, through='CategoryByDay') 

class CategoryByDay(models.Model): 
    day = models.ForeignKey(Day) 
    category = models.ForeignKey(Category) 
    status = models.CharField(max_length=64) 

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

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

Так что нужно проверить в шаблоне, если категория этот день имеет созданную модель CategoryByDay, и если статус имеет значение 0 или 1.

Могу ли я сделать это Повсеместно синтаксиса шаблона? Это потребует некоторых странных запросов. Я перехожу к моей сегодняшней дате и списку категорий. Может быть, мне нужно расширить список категорий, чтобы добавить статус здесь?

ответ

0

Я не понимаю, почему вам нужно имя для своего класса Day, но в любом случае все три класса может быть сделано в одном простом классе:

class Category(models.Model): 
    name = models.CharField(max_length=100) 
    date = models.DateField() 
    status = models.BooleanField() 

Далее вы хотите проверить, что было сделано в конкретных Дата? Просто сделайте запрос:

categorybyday = Category.objects.filter(date=your_date) 
+0

Но в этом случае, если я укажу категорию, скажите «Go Jogging» и добавьте к ней дату, это будет однократная проверка. Я хочу проверить, выполнял ли я некоторые вещи каждый день и регистрировал статус, поэтому «Go Jogging» в 17/2/14 составляет 1 (я пошел работать), но «Go Jogging» в 15/2/14 равен 0. Итак, я need m2m Отношение – qnsi

+0

Вы можете добавить статус к модели, которую я написал (посмотрите на отредактированное первое сообщение) и просто измените ее, когда это было сделано. –

+0

Предположим, у меня есть 10 категорий. Я хочу войти в течение 300 дней. Это потребовало бы, чтобы я сделал экземпляры 3000 категорий. (10 * день) Я не думаю, что вы следите за мной, я хочу заносить его повторно, а не только в один конкретный день. – qnsi

Смежные вопросы