我有一个表单,它接受来自用户的数据并使用ajax发布。此表单用于安排日历活动。
当用户添加事件时,我想查看是否存在具有相同详细信息的事件。
事件模型有一个与之关联的日历:像这样
class EventModel(models.Model):
calendar = models.ForeignKey(CalenderModel, blank=True, null=True, related_name="plans")
event_details = models.IntegerField()
以下是我在视图中创建事件时的样子:
event = EventModel(calendar=calendar, event_details =request.Post['event_details'])
event.save()
当用户尝试修改现有事件或尝试再次添加事件时,我希望能够找到他/她正在谈论的事件。
如果不具体,我该怎么做?我喜欢像
这样的东西event = EventModel.objects.get(calendar=calendar).filter(event_details = event_details)
这应该返回具有相同细节的一个事件
但它找不到......
有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
试试这样:
event, created = EventModel.objects.get_or_create(calendar=calendar, event_details = event_details)
并且created是一个布尔值,表示事件是否是现在创建的,即。类似的还没有在DB中,或者它刚刚检索到现有的on.e
答案 1 :(得分:0)
在调用filter
方法之后,您无法调用get
方法,因为get
方法返回一个模型或异常实例,而不是queryset
。试试这个:
try:
event = EventModel.objects.get(calendar=calendar, event_details=event_details)
except EventModel.DoesNotExist:
# create here if need
except EventModel.MultipleObjectsReturned:
# do something if you have two or more values with this data