class Tag(models.Model):<br>
user = models.ForeignKey(User)<br>
content_type = models.ForeignKey(ContentType)<br>
object_id = models.PositiveIntegerField()<br>
content_object = generic.GenericForeignKey('content_type', 'object_id')<br>
try:<br>
obj = Tag.objects.get(user_id=user.id, content_type=obj_type, object_id=item_id)<br>
except ObjectDoesNotExist:<br>
obj = Tag.objects.create(user_id=user.id, content_type=obj_type, object_id=item_id)<br>
....<br>
obj.save()<br>
get_or_create
, но ни суть. Суть в том, что при нескольких итерациях с одинаковыми значениями, он не находит запись и создает ее заново, потом жалуется что get()
возвращает два объекта. При чем момент создания второго — рандомный, можно на третьей итерации, может на сотой.Видимо у вас все реквесты выполняются в транзакции (есть такая настройка в settings). И когда 2 реквеста приходят примерно в одно время, они открывают транзакцию каждый свою и смотрят в ней запись. Оба не находят. Разница между майисам и иннодб в том, что первый просто не поддерживает трнзакций.