Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在数据库中找到现有对象?_Django - Fatal编程技术网

Django 如何在数据库中找到现有对象?

Django 如何在数据库中找到现有对象?,django,Django,我有一个表单,它接受来自用户的数据,并使用ajax发布。此表单用于安排日历事件 当用户添加事件时,我想看看是否存在具有相同详细信息的事件 事件模型有一个与之关联的日历:如下所示 class EventModel(models.Model): calendar = models.ForeignKey(CalenderModel, blank=True, null=True, related_name="plans") event_details = models.IntegerFi

我有一个表单,它接受来自用户的数据,并使用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)
这将返回一个具有相同详细信息的事件

但它没有找到它

有没有更好的方法来实现这一点

就这样试试吧:

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)
这会自动从请求中获取数据吗?