[英]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.