2014-02-19 20 views
0

使用Django,我正在創建一個數據庫,用於跟蹤論壇中未回覆的帖子,以及/員工(操作員)分配給該帖子。帶中間表的Django數據庫設計 - 這個實例如何?

模型OperatorThreadVault是永久性的,而Thread是中間/溫度。

我會打電話給論壇,每十分鐘收到一次沒有回覆的帖子。然後我會檢查模型ThreadVault中是否已經存在thread ID。如果不是,它會將其添加到ThreadVault。然後,我將有一個臨時/中間表Thread,其中包含過去10分鐘內未回覆的帖子。每隔10分鐘後,表Thread將清除並刷新一批未答覆的線程。

操作員/員工可能會或可能不會被分配到該線程。要做到這一點,我有ThreadVaultoperator_user_name指向Operator模型。

class Operator: 
    operator_ldap = models.ForeignKey(settings.AUTH_USER_MODEL, 
      related_name='operator_requester') 
    operator_irc_name = models.CharField(max_length="25") 
    operator_user_name = models.CharField(max_length="25") 

class ThreadVault: 
    thread_id = models.CharField(max_length="50") 
    url = models.CharField(max_length="200") 
    operator_user_name = models.ForeignKey(Operator) ## Can be Empty 

#intermediate table 
#Thread model clears out once every 
#10 minutes when API repopulates data 
class Thread: 
    url = models.ForeignKey(ThreadVault) 
    author_username = models.CharField(max_length="50") 
    author_name = models.CharField(max_length="50") 
    thread_id = models.ForeignKey(ThreadVault) 
    forum_id = models.CharField(max_length="50") 
    subject = models.CharField(max_length="200") 
    reply_count = models.CharField(max_length=("3")) 
    latest_post_date = models.CharField(max_length=("50")) 
    operator_user_name = models.ForeignKey(ThreadVault) ## Can be Empty 

我知道在這一點上,我沒有正確地做到這一點。我怎樣才能做到這一點?

回答

0

此制定了完善:

class Operator(models.Model): 
    operator_ldap = models.ForeignKey(settings.AUTH_USER_MODEL, 
      related_name='operator_requester') 
    operator_irc_name = models.CharField(max_length="25", 
      blank=True, null=True) 
    operator_user_name = models.CharField(max_length="25", 
      blank=True, null=True) 

class ThreadVault(models.Model): 
    thread_id = models.CharField(max_length="50") 
    url = models.CharField(max_length="200") 
    operator_user_name = models.ForeignKey(Operator, blank=True, null=True) ## Can be Empty 

#intermediate table 
#Thread model clears out once every 
#10 minutes when API repopulates data 
class Thread(models.Model): 
    url = models.ForeignKey(ThreadVault, 
      related_name="url_vault") 
    author_username = models.CharField(max_length="50") 
    author_name = models.CharField(max_length="50") 
    thread_id = models.ForeignKey(ThreadVault, 
      related_name="thread_vault") 
    forum_id = models.CharField(max_length="50") 
    subject = models.CharField(max_length="200") 
    reply_count = models.CharField(max_length=("3")) 
    latest_post_date = models.CharField(max_length=("50")) 
    operator_user_name = models.ForeignKey(ThreadVault, 
      related_name="operator_user_name_vault", 
      blank=True, null=True) ## Can be Empty