簡體   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