通过Django和Python中的外键访问其他模型
我对Python和Django非常陌生,我正在尝试制作我的第一个小型web应用程序。我有两个模型,在事件中使用一对多外键。这是我到目前为止所拥有的通过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 =
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=??
,那么您的模型就是完美的,您的模型没有任何可添加的内容。