通过Django和Python中的外键访问其他模型

时间:2016-02-17 19:43:04

标签: python django

我是Python和Django的新手,我正在尝试制作我的第一个小型网络应用程序。我有两个模型,在Event中有一对多的外键。这是我到目前为止所拥有的

class Event(models.Model):
    name = models.CharField(max_length=255, unique=True)
    seats = models.IntegerField()
    tickets = ???

class Ticket(models.Model):
    seat = models.IntegerField()
    eventReference = models.ForeignKey(Event)

我假设我是这样做的。一个活动可以有多张票。我为Ticket创建了一个外键,以便它可以。但是,我想直接从事件模型属性票证访问所有票证。我发现以下关系的一些示例是“向后”,但没有一个可以应用于此。因此,如果我希望Event的ticket-attribute包含与该事件相关的所有票证,那么我应该把它放在那里?像这样的东西?我很困惑。

class Event(models.Model):
    name = models.CharField(max_length=255, unique=True)
    seats = models.IntegerField()
    tickets = Event.objects.get(this??).ticket.entry_all.get()

2 个答案:

答案 0 :(得分:0)

如果您想获得活动的所有门票,请执行以下操作:

event = Event.objects.get(id=1)
tickets = event.ticket_set.all()

您不应该为tickets定义任何特殊内容,因为django的默认模型管理器已经处理过这个问题。

Django doc about following reverse foreignkey relationship

答案 1 :(得分:0)

你的models.py

class Event(models.Model):
    name = models.CharField(max_length=255, unique=True)
    seats = models.IntegerField()

class Ticket(models.Model):
    seat = models.IntegerField()
    event = models.ForeignKey(Event)

Views.py

event= Event.objects.get(id=event_id)
event.ticket_set.all()

如果您从模板

获得所有门票
event.ticket_set.all

ticketTicket模型实例

{% for ticket in event.ticket_all %} 
...
...
{% endfor%}