Django创建“back”函数

2024-05-14 10:03:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在做一个CS项目,它的工作方式类似于kickstarter,用户可以支持他们的项目。 我已经有一个follow函数,允许用户跟踪他们喜欢的项目,模型如下所示:

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)

my view.py中有一个函数,如果用户单击“follow”按钮,它会将用户添加到manytomy字段

我的问题是,我的“背部”模型应该如何构建?我需要存储用户支持这个项目的金额,在这种情况下是“团队”,以及他们支持的日期。为“follow”函数创建一个模型并不难,因为除了用户之外,我不需要存储任何额外的数据。但是对于'BACK'函数,我需要存储一些额外的数据,比如'date backed'、'amount backed'


Tags: 数据项目函数用户name模型authmodel
1条回答
网友
1楼 · 发布于 2024-05-14 10:03:52

可以将ManyToManyField^{}一起使用

在你的情况下,应该是这样的:

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>]>

相关问题 更多 >

    热门问题