Django 如何在数据库中找到现有对象?
我有一个表单,它接受来自用户的数据,并使用ajax发布。此表单用于安排日历事件 当用户添加事件时,我想看看是否存在具有相同详细信息的事件 事件模型有一个与之关联的日历:如下所示Django 如何在数据库中找到现有对象?,django,Django,我有一个表单,它接受来自用户的数据,并使用ajax发布。此表单用于安排日历事件 当用户添加事件时,我想看看是否存在具有相同详细信息的事件 事件模型有一个与之关联的日历:如下所示 class EventModel(models.Model): calendar = models.ForeignKey(CalenderModel, blank=True, null=True, related_name="plans") event_details = models.IntegerFi
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)
这将返回一个具有相同详细信息的事件
但它没有找到它
有没有更好的方法来实现这一点 就这样试试吧:
event, created = EventModel.objects.get_or_create(calendar=calendar, event_details = event_details)
And created是一个布尔值,指示事件是否现在创建,即数据库中没有类似的事件,或者它是否刚刚检索到现有的on.e在调用
get
方法之后,您不能调用filter
方法,因为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
首先,有点离题,您可以这样简化您的请求:
EventModel.objects.get(calendar=calendar,event\u details=event\u details)
这会自动从请求中获取数据吗?