2013-06-11 3 views
0

У меня есть пара моделей, настроенных для пользователей и событий. Я хочу, чтобы пользователи могли добавлять события к себе. Я могу идти об этом совершенно неправильно, но то, что я до сих пор эти модели:Попытка связать две модели с помощью Django

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    name = models.CharField(max_length=50) 

    def __unicode__(self): 
     return self.name 

class eventItem(models.Model): 
    user = models.ForeignKey(Profile) 
    event = models.ForeignKey(Event) 

    def __unicode__(self): 
     return self.event.title 

class Event(models.Model): 
    def __unicode__(self): 
     return self.title 
    event_id = models.BigIntegerField(blank = 'TRUE', primary_key='TRUE') 
    title = models.CharField(max_length=200, blank = 'TRUE') 

Я пытаюсь написать вид, который активируется каждый раз, когда пользователь нажимает на кнопку, расположенную рядом с событием. Результат должен каким-то образом связать пользователя и событие вместе, чтобы впоследствии просмотреть список событий, которые посещает каждый пользователь. Я думаю, что я также могу использовать неправильный тип поля для eventItem. Поскольку многие пользователи могут ссылаться на одно и то же событие, и многие события могут ссылаться на одного пользователя, должен ли я использовать ManytoMany?

ответ

1

Упрощение: у вас есть пользователи и события, в которых каждый пользователь может иметь более одного события, а одно событие может иметь более одного пользователя. Это означает, что наилучшим подходом в этом случае является использование ManyToMany, как вы предложили в конце. Вы избегаете наличия «eventItem», и вы напрямую получаете доступ (в django) к пользователям из событий и наоборот.

+0

Спасибо, я прочитал немного больше и изменил его на это. Теперь, как бы я обработал запись вида, которое активируется, когда я нажимаю кнопку, и добавляет событие в «eventList» пользователя. – Xonal

+0

. При нажатии кнопки у вас есть два варианта: либо вы используете метод GET (используя URL-адрес), либо Метод POST (форма или javascript). В представлении вам следует использовать user.eventList.add (event) после того, как вы поймаете request.method == «POST» или request.method == «GET» и соответствующий запрос данных. POST/request.GET. Попробуйте увидеть в документах о GET и POST в Django. –

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