繁体   English   中英

Django创建一个“后退”功能

[英]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字段中。

我的问题是我的“后背”模型应如何构建? 我需要存储用户支持该项目的金额(在这种情况下为“团队”),并存储他们支持的日期。 为“跟随”功能创建模型并不难,因为除了用户之外,我不需要存储任何其他数据。 但是对于“返回”功能,我需要存储一些其他数据,例如“日期支持”,“金额支持”。

您可以使用ManyToManyFieldthrough

在您的情况下,将是这样的:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM