2014-11-02 57 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 2014-11-02 09:17:42

+0

是的,我只是举了一个例子。这些就像其他任何模型类一样。他们没有什么特别的。 – 2014-11-02 09:27:49