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

通过Django和Python中的外键访问其他模型,python,django,Python,Django,我对Python和Django非常陌生,我正在尝试制作我的第一个小型web应用程序。我有两个模型,在事件中使用一对多外键。这是我到目前为止所拥有的 class Event(models.Model): name = models.CharField(max_length=255, unique=True) seats = models.IntegerField() tickets = ??? class Ticket(models.Model): seat =

我对Python和Django非常陌生,我正在尝试制作我的第一个小型web应用程序。我有两个模型,在事件中使用一对多外键。这是我到目前为止所拥有的

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)
我想我就是这样做的。一个活动可以有多张门票。我为票证创建了一个外键,这样就可以了。但是,我希望直接从事件模型属性tickets访问所有ticket。我发现了一些“向后”遵循关系的例子,但没有一个可以应用于此。所以,如果我希望事件的tickets属性包含与该事件相关的所有tickets,我应该在那里放置什么?像这样的?我很困惑

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

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

event = Event.objects.get(id=1)
tickets = event.ticket_set.all()
您不应该为
票据定义任何特殊的内容,因为django的默认模型管理器已经解决了这一问题

.

您的型号.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
票证
票证
型号instace

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

那么,我真的可以在Event类中拥有tickets属性吗?您已经拥有了它:这就是
ticket\u set
的含义,Django会自动为您定义它。我不确定是否遵循了它。如果我设置tickets=ticket\u set,我会得到name错误:name'ticket\u set'没有定义。我不这么认为,
ticket\u set
是与
事件
关联的默认管理器,您需要在
事件
对象上使用它。你没有在课堂上定义它。我向您展示的代码可以在任何地方使用(views.py、django shell等)。换句话说,如果您摆脱了
tickets=??
,那么您的模型就是完美的,您的模型没有任何可添加的内容。