所以我想到了2个计划。
第一个计划:
在每个帖子上制作不同的书签模型
喜欢:
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
中没有必要做某事我问的是:
答案 0 :(得分: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)