2014-02-16 2 views
0

У меня есть форма, которая принимает данные от пользователя и отправляется с помощью 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

Во-первых, немного не по теме, вы можете упростить ваш запрос, как это: 'EventModel.objects.get (календарь = календарь, event_details = event_details)' –

+0

ли это автоматически получить данные из запроса ? – user3043594

ответ

0

Просто попробуйте так:

event, created = EventModel.objects.get_or_create(calendar=calendar, event_details = event_details) 

И создали этот Логическое значение, указывающее, было ли создано событие сейчас, то есть. ничего подобного не было в БД еще, или если он просто извлекается существующий on.e

0

Вы не можете позвонить из filter метода после того, как вы назвали, то get метод, becouse 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 
Смежные вопросы