本文介绍了从多对多关系的查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在Django创建一个小日历应用程序。我有两个模型类;日历和事件。事件可以在多个日历中。因为这样我使用了一个ManyToMany关系。
这是我的模型
from django.db import models class Calendar(models.Model): title = models.CharField(max_length = 255) def __unicode__ (self): return self.title class Event(models.Model): title = models.CharField(max_length = 255) start_date = models。 DateField() end_date = models.DateField(blank = True,null = True) location = models.CharField(blank = True,max_length = 255) description = models.TextField = True) important = models.BooleanField(default = False) calendar = models.ManyToManyField(Calendar)如何从特定日历中获取所有事件的查询器?
解决方案日历记录实例上的.event_set属性。像这样:
#创建两个日历 one = models.Calendar.objects.create(title ='calendar one ') two = models.Calendar.objects.create(title ='calendar two') #将事件1连接到两个日历 event = models.Event.objects。 create(title ='event 1',start_date ='2011-11-11') one.event_set.add(event) two.event_set.add(event) #attach event 2 to calendar 2 two.event_set.add(models.Event.objects.create(title ='event 2',start_date ='2011-11-11')) #获取并打印日历中的所有事件 events_one = models.Calendar.objects.get(title ='calendar one')。event_set.all() print [event.title for event in event_one] #将打印:[u'event 1'] #从日历2获取并打印所有事件 events_two = models.Calendar.objects.get(title = 'calendar two')。event_set.all() print [event.title for event in events_two] #将打印:[u'event 1' ,u'event 2']models.Calendar.objects.get(title ='two') .event_set.all()
I'm creating a little calendar app in Django. I have two model classes; Calendar and Event. An event can be in multiple calendars. Because of this I'm using a ManyToMany relation.
This is my model
from django.db import models class Calendar(models.Model): title = models.CharField(max_length = 255) def __unicode__(self): return self.title class Event(models.Model): title = models.CharField(max_length = 255) start_date = models.DateField() end_date = models.DateField(blank = True, null = True) location = models.CharField(blank = True, max_length = 255) description = models.TextField(blank = True) important = models.BooleanField(default = False) calendar = models.ManyToManyField(Calendar)How can I get a queryset with all events from a specific calendar?
解决方案You would use the .event_set attribute on an instance of a Calendar record. Like this:
# create two calendars one = models.Calendar.objects.create(title='calendar one') two = models.Calendar.objects.create(title='calendar two') # attach event 1 to both calendars event = models.Event.objects.create(title='event 1', start_date='2011-11-11') one.event_set.add(event) two.event_set.add(event) # attach event 2 to calendar 2 two.event_set.add(models.Event.objects.create(title='event 2', start_date='2011-11-11')) # get and print all events from calendar one events_one = models.Calendar.objects.get(title='calendar one').event_set.all() print [ event.title for event in events_one ] # will print: [u'event 1'] # get and print all events from calendar two events_two = models.Calendar.objects.get(title='calendar two').event_set.all() print [ event.title for event in events_two ] # will print: [u'event 1', u'event 2']models.Calendar.objects.get(title='two').event_set.all()
更多推荐
从多对多关系的查询
发布评论