【发布时间】:2020-09-27 06:44:27
【问题描述】:
我刚刚开始创建一个与 Pinterest 类似的网站,并且该网站具有我几乎不了解的追随者/目标系统。到目前为止,我的 models.py 代码如下:
from django.db import models
class User(models.Model):
username = models.CharField(max_length=45, null=True)
email = models.CharField(max_length=200, null=True)
password = models.CharField(max_length=200)
nickname = models.CharField(max_length=45, null=True)
target = models.ManyToManyField(self, through='Follow')
follower = models.ManyToManyField(self, through='Follow')
class Meta:
db_table = 'users'
class Follow(models.Model):
follower = models.ForeignKey(User, on_delete=models.CASCADE, related_name='targets')
target = models.ForeignKey(User, on_delete=models.CASCADE, related_name='followers')
class Meta:
db_table = 'follows'
这段代码参考了另一个 StackOverflow 线程 Django models: database design for user and follower 但是,我无法理解如何在 'follower' 中使用 "related_name='targets' 和在 'target' 中使用 "related_name='followers'" 我看不到任何 'targets'(复数)或 'followers'(复数) 在models.py的其他领域
我应该去掉那个related_name,因为没有这样的表叫做“followers”或“targets”吗?如果你在我的代码或逻辑中发现重大错误,你能告诉我吗?谢谢!
【问题讨论】:
-
related_name表示django添加了与其他模型的关系,因此您可以通过myuser.followers获取target引用的相关Follow对象。
标签: python django django-models