2016-02-17 35 views
0

我对Python和Django相当陌生,我试图制作我的第一个小型Web应用程序。我有两个模型,在Event中有一对多的外键。这是我到目前为止通过Django和Python中的外键访问其他模型

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的票务属性包含与该事件相关的所有票证,那么我应该放哪些票据?像这样?我很困惑。

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

回答

0

如果你想获得的所有门票的活动,你这样做:

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

,应该定义什么特别为tickets,因为Django默认的模型管理器已经采取的照顾。

Django doc about following reverse foreignkey relationship

+0

我可以在事件类中实际拥有一个ticket-attribute吗? – Doeful

+1

你已经拥有它了:那就是'ticket_set'是什么,Django自动为你定义它。 –

+0

我不确定我是否遵循。如果我设置票= ticket_set,我得到NameError:名称'ticket_set'未定义。 – Doeful

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模型instace

{% for ticket in event.ticket_all %} 
... 
... 
{% endfor%} 
相关问题