擅长:python、mysql、java
<p>除了跟踪一篇文章有多少个<code>Likes</code>外,您可能还想跟踪谁“喜欢”了每一篇文章。您可以通过在<code>User</code>和<code>Howl</code>上创建具有唯一键的联接表<code>Likes</code>来解决这两个问题。你知道吗</p>
<p>唯一键将防止任何<code>User</code>进行重复喜欢。你知道吗</p>
<p>您可以在Django中使用<a href="https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/" rel="nofollow">^{<cd6>}</a>来实现这一点,请注意,由于这意味着向<code>Howl</code>添加第二个<code>User</code>关系,因此我们需要通过提供<code>related_name</code>来消除关系的歧义</p>
<p>例如:</p>
<pre><code>class Howl(models.Model):
author = models.ForeignKey(User, null=True, related_name='howls_authored')
liked_by = models.ManyToManyField(User, through='Like')
# ...rest of class as above
class Like(models.Model):
user = models.ForeignKey(User)
howl = models.ForeignKey(Howl)
class Meta:
unique_together = (('user', 'howl'))
</code></pre>
<p><code>like_count</code>计数就会变得多余,因为您可以改用<code>Howl.liked_by.count()</code>。你知道吗</p>
<p>这样做的另一个好处是,它允许您在添加<code>Like</code>-eg时存储有关它的信息。你知道吗</p>