我开始使用django开发,但我无法获得一些价值。在我看来它应该很简单。
我有多个模型,但我很难在视图中从事件本身获取区域(县)。下面我有一个非常简短的事件代码示例(但是,如果你需要更多的话,请不要真正相关)。
class Event(models.Model):
organiser = models.ForeignKey(User)
etc...
问题是单个事件可以在多个区域中公布(限于事件类型)。为了确保它不是很多,我已经定义了一个事件县,如下所示:
class EventCounty(models.Model):
county = models.ForeignKey(county)
event = models.ForeignKey(event)
现在问题在于视图,对于我的索引页面,我想展示最近添加的5个和即将发生的5个事件。这非常简单,因为我可以通过Event中的date_added和event_date字段进行排序。但是,我不确定如何从这些数据访问该县。
我假设我可以自己编写sql语句(很简单)但是,如果可能的话,我想留在django框架中并使用他们的代码。我相信下面的陈述将是我需要翻译的内容(它可能会也可能不起作用!)。
select county from EventCounty where event in (listevents);
如果有人知道如何让这个工作,我将不胜感激!
提前致谢,
路
答案 0 :(得分:0)
正如您所定义的,事件可以在多个县。因此,事件对象设置为County
,您可以将其作为
event_obj.county_set.all()
county_set()
为RelatedManager
,因此您可以对其进行.filter()
,.get()
等。
答案 1 :(得分:0)
objs = EventCounty.objects.filter(event__in=listevents)
countyList = []
for obj in objs:
countyList.append(obj.county)
答案 2 :(得分:0)
如果要包含引用的对象,请选中select_related
EventCounty.objects.select_related('event').filter(....)
答案 3 :(得分:0)
由于EventCount模型将ForeignKey保存到Event模型,因此相当简单 - ForeignKey启用“向后”关系(请参阅Django documentation)。在你的情况下,这可能看起来像:
events = Event.objects.all().order_by(<put your date field here>)[:5]
获取所有EventCounty对象的列表(或QuerySet),例如第一个Event对象只使用:
events_county = events[0].eventcounty_set.all()
正如Rohan所建议的,eventcounty_set是一个RelatedManager,这意味着你可以像使用QuerySet(过滤,排除,顺序,切片等)一样使用它。