2016-02-17 33 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%} 
相關問題