Django 创建一个'back'函数



我目前正在研究一个类似于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字段。

我的问题是如何结构我的"背部"模型?在这种情况下,我需要存储用户备份该项目或"团队"的数量,以及他们备份的日期。为"关注"函数创建模型并不难,因为除了用户之外,我不需要存储任何其他数据。但是对于" Back"功能,我需要存储一些其他数据,例如"日期备份","金额备份"。

您可以将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>]>

相关内容

最新更新