如何与django建立关系

时间:2016-08-05 14:15:53

标签: python django

这将是我在这里发表的第一篇文章,所以我希望一切都是正确的。

我在django遇到了一些麻烦,我尝试做一个小彩票游戏。 对于这个游戏,我有一个名为bitcoinlottery的应用程序,并在那个应用程序2模型。至于现在他们看起来像这样:

from django.db import models
from django.utils import timezone

class Lottery(models.Model):
   owner = models.ForeignKey('auth.User')
   title = models.CharField(max_length=100)
   slug = models.SlugField(max_length=110)
   max_players = models.IntegerField()
   total_players = models.CharField(default=0)
   online = models.BooleanField(default=True)
   create_date = models.DateTimeField(default=timezone.now)

class Ticket(models.Model):
   owner = #this most be related to the user that buy the ticket
   lottery_id = #this most be related to the id of the lottery
   ticket_id =  #a random number

现在我有两个问题无法解决。

第一个是如何创建与彩票max_players相关的门票数量,max_players将是一些可用的最大玩家/门票。

第二个问题是有一个选项可以在彩票的管理页面上查看列表中的所有可用票证吗?如果是的话,有什么方法可以做到这一点。

感谢您的帮助。 祝你有愉快的一天。

1 个答案:

答案 0 :(得分:0)

首先,我不确定您的所有者字段是否有效。我没有看到任何auth包的导入

owner = models.ForeignKey('auth.User')

首先,我建议你看看这个post来改变这种关系。

您的两个问题都需要更清楚地了解您实际要实现的目标。如果Ticket模型也已完成,将会很有帮助。

对于给定的信息,很难说如果可能看起来两个模型之间没有关系。

class Ticket(models.Model):
   # This is not required unless you want it for some reason, you can use
   # this owner from the lotter_id
   owner = #this most be related to the user that buy the ticket
   lottery_id = models.ForiegnKey(Lottery)
   ticket_id =  #a random number

def __str__(self):
    return self.lottery_id, function_that_return_max_tickets()

使用上述关系,您可以根据您的要求在ModelManager中编写自定义函数。

通读Django提供的Mangers,可以使用这些函数编写那些计算最大票数的函数,如果你想在views.py中使用ORM,则可以返回。