[英]Django create a 'back' function
我目前正在开发一个与kickstarter类似的CS项目,用户可以支持他们的项目。 我已经有了一个关注功能,该功能允许用户关注他们喜欢的项目,该模型如下所示:
class Team(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='team')
following = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='followers', blank=True)
我的view.py中有一个功能,如果用户单击“跟随”按钮,则将用户添加到MANYTOMANY字段中。
我的问题是我的“后背”模型应如何构建? 我需要存储用户支持该项目的金额(在这种情况下为“团队”),并存储他们支持的日期。 为“跟随”功能创建模型并不难,因为除了用户之外,我不需要存储任何其他数据。 但是对于“返回”功能,我需要存储一些其他数据,例如“日期支持”,“金额支持”。
您可以使用ManyToManyField
与through
在您的情况下,将是这样的:
class Team(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='team')
following = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='followers', blank=True)
backers = models.ManyToManyField(settings.AUTH_USER_MODEL, through='Backer', related_name='backers', blank=True)
class Backer(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
team = models.ForeignKey('Team', related_name='team')
amount = models.FloatField()
date_joined = models.DateField()
然后添加支持者:
backer = Backer(user=some_user, team=some_team, date_joined=date(2017, 02, 22), amount=200)
您可以通过ManyToManyField
获得团队的支持者:
SomeTeam.backers.all()
>>> <QuerySet [<User: Some User>]>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.