2017-03-26 27 views
1
  1. 我的項目有2個或更多的不同類型的模型作爲後
  2. ,我想書籤各類崗位車型
  3. 我需要儀表板或時間軸,顯示書籤的職位無論那種職位

所以我想2計劃。你對我的Django模型結構有什麼看法?

第一個計劃:

在每一個崗位

喜歡做不同的書籤模型:

class UserProfile(models.Model): 
    user = AutoOneToOneField(User, primary_key=True)#its_from_django-annoying 

class Post1(models.Model): 
    text1 = models.TextField(max_length=110) 

class Post2(models.Model): 
    text2 = models.TextField(max_length=120) 

class bookmarkForPost1(models.Model): 
    who_user = models.ForeignKey(UserProfile) 
    what_bookmarked = models.ForeignKey(Post1) 

class bookmarkForPost2(models.Model): 
    who_user = models.ForeignKey(UserProfile) 
    what_bookmarked = models.ForeignKey(Post2) 

,並做一些儀表盤在views.py

第二個計劃:

製作PostProfile模型,書籤,

像:

class UserProfile(models.Model): 
    user = AutoOneToOneField(User, primary_key=True) 

class PostProfile(models.Model): 
    description = models.TextField(max_length=100) 
    #Do something to connect Post1 or Post2 

class Post1(models.Model): 
    text1 = models.TextField(max_length=110) 
    #Do something to connect PostProfile 

class Post2(models.Model): 
    text2 = models.TextField(max_length=120) 
    #Do something to connect PostProfile 

class bookmarkForPosts(models.Model): 
    who_user = models.ForeignKey(UserProfile) 
    what_bookmarked = models.ForeignKey(PostProfile) 

第二個計劃是似乎是簡單和有利於我的眼睛。

第二個計劃,我不知道我把OneToOneField放在哪裏。在PostProfile或Post1(+ Post2)?另外,我無法理解如何在創建Post1或Post2後自動創建PostProfile。 但是第二個計劃是擅長,有沒有需要做views.py

東西我問的是:

  1. 是否有第一個計劃和第二個計劃之間存在嚴重的性能差異?如果是,有什麼更好?
  2. 你願意給我一些建議來完成第二個計劃嗎?
+1

你可能考慮將你的問題轉移到代碼審查,如果它是收集有關想法和樣式的評論。 – gonczor

回答

2

如何:定義一個類崗位的,所以你可以有更多類型的帖子在未來,和UserBookmark因此用戶可以有很多書籤他想:

class UserProfile(models.Model): 
    # its a good practice from django 
    user = OneToOneField(User, primary_key=True) 

class Post(models.Model): 
    P_TYPE_1 = 1 
    P_TYPE_2 = 2 
    TAB_P_TYPE = { 
     P_TYPE_1: _("Type 1"), 
     P_TYPE_2: _("Type 2"), 
    } 
    post_type = models.IntegerField(
     choices=[(a, b) for a, b in list(TAB_P_TYPE.items())], 
     default=P_TYPE_1) 
    text = models.TextField(max_length=110) 

class UserPostBookmark(models.Model): 
    user = models.ForeignKey(UserProfile) 
    post = models.ForeignKey(Post) 
+0

感謝您的回答 – touchingtwist

+1

歡迎您,我的榮幸! –