【发布时间】:2014-05-16 23:20:15
【问题描述】:
我正在尝试构建一个应用程序,让人们可以查看政治家发布的推文,我正在努力寻找正确的方法来指定 Twitter 上的用户和离线用户之间的关系。例如,一位政客可能有两个 Twitter 账户,而这些账户可能会提及其他三个非政客的 Twitter 用户。现在,我有一个包含来自 Twitter API 的信息(例如,关注者数量、推文数量)的用户表,其中包含来自政治家账户和她/他提到的账户的 Twitter 信息,以及一个立法者表,其中包含有关立法者的信息(例如,政党、议院)。
- 用户在 twitter_id 上与立法者相关
- 用户可以在立法者表中有 0 或 1 个条目
- 立法者在用户表中可以有 0、1 或 n 个条目
如何为 Django 正确设置该模型?如何访问模板中的用户和立法者信息?通过以下设置,我无法从 user.legislator_set 访问立法者表中的任何内容。
class User(models.Model):
id = models.IntegerField(primary_key=True)
twitter_id = models.CharField(max_length=21, unique=True)
twitter_name = models.CharField(max_length=55, unique=True)
fullname = models.CharField(max_length=45)
followers = models.IntegerField()
following = models.IntegerField()
favorites = models.IntegerField()
tweets = models.IntegerField()
timezone = models.CharField(max_length=45, blank=True)
class Legislator(models.Model):
id = models.IntegerField(primary_key=True)
last_name = models.CharField(max_length=17, blank=True)
first_name = models.CharField(max_length=11, blank=True)
chamber = models.CharField(max_length=3, blank=True)
state = models.CharField(max_length=2, blank=True)
party = models.CharField(max_length=11, blank=True)
twitter_id = models.ForeignKey(User, to_field = "twitter_id", related_name="%(app_label)s_%(class)s_id")
twitter = models.ForeignKey(User, to_field = "twitter_name", related_name="%(app_label)s_%(class)s_name")
【问题讨论】:
-
您所说的“用户与
twitter_id上的立法者有关”是什么意思?如果每个Legislator有多个User实例,则不可能使它们全部与twitter_id匹配,除非所涉及的所有User实例都具有相同的twitter_id。在我看来,您只需要在您的User模型上添加一个legislator = models.ForeignKey(Legislator, null=True)字段,并删除Legislator.twitter_id和Legislator.twitter字段,但我可能看不到您的整个场景。 -
“用户在
twitter_id上与立法者有关”我的意思是 twitter_id 是我匹配它们的方式(如果我不使用 Django 并且只是从MySQL数据库)。legislator = models.ForeignKey(Legislator, null=True)用什么来关联这两个表?
标签: python django django-models model