2014-11-02 3 views
0

Я хочу создать класс модели «Событие» (событие будет состоять из двух типов: one_time_event и recurring_event) и отдельный класс модели для «one_time_event» и «recurring_event».Класс модели Django и отношения между ними

Таким образом, в таблице событий, я хочу иметь что-то вроде этого

event_id     event_type(2choices)     event_type_id 
--------------------------------------------------------------------------- 
1       one_time_event    one_time_event_Object 
2       recurring_event    recurring_event_object 
3       one_time_event    one_time_event_Object 
4       recurring_event    recurring_event_object 

поэтому вопрос как я определить мой класс модели для достижения этой цели.

Заранее спасибо

ответ

0

Вы ищете GenericForeignKey доступных из contenttypes способствовало приложение.

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

from django.db import models 
from django.contrib.contenttypes.fields import GenericForeignKey 
from django.contrib.contenttypes.models import ContentType 

class OneTimeEvent(models.Model): 
    # your normal fields here 

class RecurringEvent(models.Model): 
    # your normal fields here 

class Event(models.Model): 
    # your normal fields here 
    content_type = models.ForeignKey(ContentType) # A link to any kind of content 
    object_id = models.PositiveIntegerField() # The id for the linked object 
    event_type = models.GenericForeignKey() # This can point to any kind of object 

Теперь вы можете сделать это:

recurring_event = RecurringEvent.objects.create() 
event = Event() 
event.event_type = recurring_event 
event.save() 
+0

Да я могу иметь другие поля в OneTimeEvent & RecurringEvent класс? – vaibhav1312

+0

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